Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: add support for OTel context propagation and harmonized spans #1833

Merged
merged 162 commits into from
Aug 24, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
162 commits
Select commit Hold shift + click to select a range
0d9c0b2
feat: use the propagation inject framework for OpenTelemetry publishes
feywind Nov 18, 2022
4f3daa9
feat: add propagation extraction to subscriber for OpenTelemetry
feywind Nov 18, 2022
80d8b65
feat: work in progress on adding sub-spans
feywind Nov 22, 2022
cbd5992
add more spans
feywind Nov 28, 2022
75acbab
wrap subscriber on() handlers to get better receive process spans
feywind Nov 30, 2022
bb6cf85
update otel core version for tests
feywind Dec 1, 2022
5cddaed
fix: change some span names for doc updates
feywind Dec 8, 2022
d523b1f
fix: move emitter wrapper out one level, to catch user functions prop…
feywind Dec 8, 2022
fbe29a2
chore: merge remote-tracking branch 'remotes/origin/main' into otel-2
feywind Dec 14, 2022
197a214
fix: don't send anything besides what's actually needed during publish
feywind Dec 14, 2022
a36cfce
fix: close the publish span at RPC time, not up front
feywind Dec 14, 2022
5c4fef6
fix: delay caching of the trace provider so the user has a chance to …
feywind Dec 14, 2022
b58557d
build: bring OTel versions back to compatible with Node 12
feywind Dec 15, 2022
4b7cf0c
fix: clean up a few more namespace pollution issues in OTel support
feywind Dec 15, 2022
45047c7
tests: manually end the publish span for tests
feywind Dec 15, 2022
3995fd0
build: update package names for recent version updates
feywind Dec 15, 2022
f2f8f57
chore: get versions of OTel that work together and with Node 12
feywind Dec 16, 2022
4a2a79e
chore: linter nit
feywind Dec 16, 2022
bb815d3
chore: another linter nit
feywind Dec 16, 2022
5d60ff3
chore: OTel sample formatting
feywind Dec 16, 2022
f8a5c09
chore: some internal renaming to reflect the function rather than nam…
feywind Dec 20, 2022
d21480d
fix: more work towards the Promise-first publish flow
feywind Dec 21, 2022
fe4947d
tests: remove unnecessary init line
feywind Dec 21, 2022
568add9
fix: add tracing support for updating the topic name in publisher spans
feywind Dec 21, 2022
5243ea9
fix: use the most up to date name for topic, subscription, and iam
feywind Dec 21, 2022
8dd13f8
fix: update telemetry spans before publishing, in case the topic name…
feywind Dec 21, 2022
60c70a8
chore: merge remote-tracking branch 'remotes/origin/main' into otel-2
feywind Dec 21, 2022
57c1673
chore: merge remote-tracking branch 'remotes/origin/main' into otel-2
feywind Jan 23, 2023
0a3b9a6
chore: merge remote-tracking branch 'remotes/origin/main' into otel-2
feywind Apr 26, 2023
bc95037
chore: calm linter qualms
feywind Apr 26, 2023
02b395b
chore: merge remote-tracking branch 'remotes/origin/main' into otel-2
feywind Apr 26, 2023
a3d66c2
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Apr 26, 2023
a1870ac
chore: merge remote-tracking branch 'remotes/origin/main' into otel-2
feywind Apr 28, 2023
50c8f74
chore: merge branch 'otel-2' of https://github.com/feywind/nodejs-pub…
feywind Apr 28, 2023
90f9ead
fix: update drain() not to promisify
feywind Apr 28, 2023
4ce3fc4
tests: update unit tests for recent promise changes to publish()
feywind Apr 28, 2023
8e18826
feat: add modAck spans during leasing
feywind May 3, 2023
569d744
docs: add more code comment docs
feywind May 3, 2023
886c0ee
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] May 3, 2023
8b7e0a9
tests: unit test fixes, also include deadline and initial parameters …
feywind May 3, 2023
4df6be6
chore: merge branch 'otel-2' of https://github.com/feywind/nodejs-pub…
feywind May 3, 2023
83830d6
fix: make sure the subscriber span ends, update sample
feywind May 8, 2023
094f08d
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] May 8, 2023
a713a2e
tests: update unit test for latest changes
feywind May 9, 2023
58c979a
chore: merge branch 'otel-2' of https://github.com/feywind/nodejs-pub…
feywind May 9, 2023
171c8f9
chore: pull promise-based publish out of OTel change
feywind May 9, 2023
2b4dd6e
chore: merge remote-tracking branch 'feywind/promise-based-publish-me…
feywind May 9, 2023
7b13da5
chore: merge remote-tracking branch 'remotes/origin/main' into otel-2
feywind May 12, 2023
f66cfcd
chore: merge remote-tracking branch 'remotes/origin/main' into otel-2
feywind May 12, 2023
2e09a3d
chore: merge remote-tracking branch 'remotes/origin/main' into otel-2
feywind Jun 12, 2023
50bd1bf
tests: update otel sample test
feywind Jun 12, 2023
0e7e5da
wip: end all telemetry spans when clear() is called
feywind Jun 14, 2023
a287386
wip: add more unit tests
feywind Jun 14, 2023
68335e5
Merge branch 'legacy-v3' into otel-2
feywind Aug 15, 2023
0f2dc41
fix: include batch size with each published message span
feywind Aug 15, 2023
1ba495a
chore: fix lint
feywind Aug 15, 2023
49b0bc3
fix: separate out the getter and setter classes
feywind Aug 15, 2023
12f400d
chore: rename span related objects in subscriber
feywind Aug 15, 2023
febcd16
chore: rename SpanMaker
feywind Aug 15, 2023
a471875
docs: improved comments and lint fixes
feywind Aug 15, 2023
a37194d
docs: more class/comment updating
feywind Aug 15, 2023
9ec1fdf
fix: missing spans caused by renames; also do more renames
feywind Aug 17, 2023
5f33931
tests: more renaming issues
feywind Aug 18, 2023
f167885
tests: add otel test for FlowControlledPublisher
feywind Aug 18, 2023
feeccf1
tests: add lease manager tests for otel
feywind Aug 18, 2023
b218d5f
tests: add SubscriberSpans unit tests
feywind Aug 21, 2023
ee09b69
fix: simplify logic for HTTP/1.1 REST fallback option (#1809)
gcf-owl-bot[bot] Aug 30, 2023
421c678
build: update Node.js version and base Debian version (#1793)
gcf-owl-bot[bot] Aug 3, 2023
7858cbc
docs: fix node release schedule link (#1794)
gcf-owl-bot[bot] Aug 3, 2023
25eb27a
chore: update release-please post-processing for nodejs apiary (#1805)
gcf-owl-bot[bot] Aug 17, 2023
bfcf523
fix: Make retry policy back off more aggressively for RPCs that retry…
gcf-owl-bot[bot] Aug 24, 2023
dedfdea
fix: set grpc keepalive time|outs by default (#1814)
feywind Sep 5, 2023
ddf8b8a
fix: always fill the topic and sub names when creating from a PubSub …
feywind Sep 7, 2023
edaa213
chore(legacy-v3): release 3.7.4 (#1820)
release-please[bot] Sep 11, 2023
2471c16
Merge branch 'legacy-v3' into otel-2
feywind Sep 13, 2023
d0503d0
chore: merge remote-tracking branch 'remotes/origin/otel-2' into otel-4
feywind Sep 20, 2023
6e4cbb3
Merge branch 'main' into otel-4
feywind Sep 20, 2023
df70922
docs: update copyrights to make header-check happy
feywind Sep 20, 2023
161fb73
chore: remove left-in console.trace
feywind Sep 20, 2023
ad9cfa2
feat: update opentelemetry packages to latest
feywind Sep 20, 2023
4acfbbc
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Sep 20, 2023
34055d1
Merge branch 'main' into otel-4
feywind Sep 21, 2023
1e6887b
chore: merge (correct) remote-tracking branch 'remotes/feywind/otel-2…
feywind Sep 21, 2023
1c00a67
chore: merge branch 'otel-4' of https://github.com/feywind/nodejs-pub…
feywind Sep 21, 2023
6512ace
samples: mostly whitespace, but updated OTel sample
feywind Oct 12, 2023
8649123
Merge branch 'main' into otel-4
feywind Oct 16, 2023
b325621
Merge branch 'main' into otel-4
feywind Nov 3, 2023
61d7ecd
feat: updates for the new design doc: batching, events, separate RPC …
feywind Nov 29, 2023
9ee3066
tests: fix / update tests for batch changes
feywind Nov 29, 2023
94e1e91
feat: change ack/nack/modack to be events
feywind Nov 29, 2023
aac3edd
fix: fixes for previous commits
feywind Nov 29, 2023
0d64d90
fix: move span closing to subscriber, upon (n)ack
feywind Nov 30, 2023
97d6bef
docs: update custom gcp attributes
feywind Nov 30, 2023
75dc17c
Merge branch 'main' into otel-4
feywind Nov 30, 2023
6c0b08c
chore: merge remote-tracking branch 'remotes/feywind/otel-4' into ote…
feywind Nov 30, 2023
d4cb0e8
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Nov 30, 2023
3171a20
chore: merge remote-tracking branch 'remotes/feywind/otel-4' into ote…
feywind Nov 30, 2023
5b9a95f
docs: update subscriber comments
feywind Nov 30, 2023
c54efc6
tests: add unit tests for shutdown events
feywind Nov 30, 2023
fb42fa4
fix: missed commits from previous
feywind Nov 30, 2023
d70c94b
fix: update span attributes for ordering key
feywind Dec 4, 2023
1a33c99
fix: update gcp.pubsub to gcp_pubsub
feywind Dec 5, 2023
579d2c9
feat: add back in receive response spans
feywind Dec 5, 2023
7e00b10
docs: fix inadequate comments for deadline
feywind Dec 5, 2023
e70516b
feat: add ack/nack/modack events in processing
feywind Dec 5, 2023
f3b4070
fix: publisher -> publish scheduler
feywind Dec 5, 2023
be5fa9c
Merge pull request #4 from feywind/otel-4-links
feywind Jan 31, 2024
434ece2
chore: merge remote-tracking branch 'remotes/origin/main' into otel-4
feywind Jan 31, 2024
9e6baf8
chore: merge remote-tracking branch 'remotes/origin/main' into otel-4…
feywind Feb 27, 2024
f0909bc
chore: fix intermediate samples build exclusion
feywind Feb 27, 2024
09319ee
feat: update otel span names and attributes to latest spec
feywind Mar 13, 2024
bdfa0d6
chore: merge remote-tracking branch 'remotes/origin/main' into otel-4…
feywind Mar 13, 2024
d4a1041
chore: merge remote-tracking branch 'remotes/origin/main' into otel-4
feywind Mar 13, 2024
1a64d5d
chore: merge remote-tracking branch 'remotes/feywind/otel-4' into ote…
feywind Mar 13, 2024
cd1843f
chore: remove extraneous import
feywind Mar 13, 2024
85d34b7
feat: add publish start/end events
feywind Mar 14, 2024
adf3be3
docs: comment updates about modack spans
feywind Mar 14, 2024
700db86
tests: add a bunch of unit tests for new otel stuff
feywind Mar 21, 2024
55b67b0
fix: subId might be undefined
feywind Mar 21, 2024
6009a1f
chore: merge remote-tracking branch 'remotes/origin/main' into otel-4
feywind Mar 21, 2024
9bbe060
chore: merge remote-tracking branch 'remotes/feywind/otel-4' into ote…
feywind Mar 21, 2024
d5f1c5d
fix: revert incorrect attribute change
feywind Mar 22, 2024
9e12418
docs: clarify some comments
feywind Mar 22, 2024
cd1856c
tests: update the test for the last commit
feywind Mar 22, 2024
000fd12
feat: otel updates for latest spec doc
feywind Mar 22, 2024
d0a7ebe
chore: merge remote-tracking branch 'remotes/origin/main' into otel-4
feywind Mar 22, 2024
4c384bc
fix: change processing span to use ack/nack instead of callback time
feywind Mar 25, 2024
52a640c
Merge branch 'main' into otel-4
feywind Apr 4, 2024
1b19c73
Merge pull request #6 from feywind/otel-process-end
feywind Apr 4, 2024
8695174
docs: fix copyright ranges on renamed/updated files
feywind Apr 4, 2024
5700754
chore: OTel changed how semantic attribute names are specified
feywind Apr 4, 2024
26f0f51
tests: update otel sample tests for latest changes
feywind Apr 4, 2024
c09fb06
samples: update JS otel sample from TS
feywind Apr 4, 2024
39418d7
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Apr 4, 2024
479b085
samples: update otel tracing sample with the correct tags and some ot…
feywind May 1, 2024
16aba6c
samples: split otel samples into listen/publish
feywind Jul 12, 2024
067f695
chore: merge remote-tracking branch 'remotes/origin/main' into otel-4
feywind Jul 12, 2024
f4b4014
chore: merge branch 'otel-4' into otel-4-samples
feywind Jul 12, 2024
34f35a1
tests: fix resource name for otel
feywind Jul 12, 2024
ede295a
build: remove defunct typing
feywind Jul 12, 2024
c89d29c
Merge pull request #7 from feywind/otel-4-samples
feywind Jul 12, 2024
4f218eb
feat: add support for globally enabling (and disabling) otel tracing
feywind Jul 12, 2024
3b07e63
chore: merge remote-tracking branch 'remotes/origin/main' into otel-4
feywind Jul 15, 2024
9995c99
feat: add bidi links between RPC and message spans, and filter by isS…
feywind Jul 17, 2024
68e4293
feat: track code.function
feywind Jul 17, 2024
95e131e
Merge pull request #8 from feywind/otel-4-enable-flag
feywind Jul 26, 2024
9c04f8b
docs: update comment based on CR
feywind Jul 26, 2024
175526e
chore: merge remote-tracking branch 'remotes/feywind/otel-4' into ote…
feywind Jul 26, 2024
b66fa7e
tests: publishSpan might be undefined if tracing isn't enabled
feywind Jul 26, 2024
2f2585b
Merge pull request #9 from feywind/otel-4-sampler
feywind Jul 26, 2024
6c5c97e
chore: merge remote-tracking branch 'remotes/feywind/otel-4' into ote…
feywind Jul 26, 2024
b3e7524
chore: small merge issue
feywind Jul 26, 2024
9292e2f
feat: track code.function
feywind Jul 26, 2024
d436f2c
fix: update spans for ack/modack to match newest spec
feywind Jul 26, 2024
8974fb0
fix: update ack/modack spans to match latest spec (draft)
feywind Jul 30, 2024
3a4cf90
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Jul 30, 2024
0513cd2
samples: add the otel enable flag to new otel samples
feywind Aug 7, 2024
f195bf5
Merge pull request #12 from feywind/otel-4-samples-enable
feywind Aug 7, 2024
3ea2fc4
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 7, 2024
c0db4e7
Merge branch 'main' into otel-4
feywind Aug 23, 2024
83b6e41
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 23, 2024
4283276
docs: last minute review, mostly adding private/internal doc tags
feywind Aug 23, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
/.nyc_output
/docs/
/out/
/build/
**/build/
system-test/secrets.js
system-test/*key.json
*.lock
Expand Down
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -163,15 +163,16 @@ Samples are in the [`samples/`](https://github.com/googleapis/nodejs-pubsub/tree
| Listen with exactly-once delivery | [source code](https://github.com/googleapis/nodejs-pubsub/blob/main/samples/listenForMessagesWithExactlyOnceDelivery.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-pubsub&page=editor&open_in_editor=samples/listenForMessagesWithExactlyOnceDelivery.js,samples/README.md) |
| Listen For Protobuf Messages | [source code](https://github.com/googleapis/nodejs-pubsub/blob/main/samples/listenForProtobufMessages.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-pubsub&page=editor&open_in_editor=samples/listenForProtobufMessages.js,samples/README.md) |
| Listen For Messages With Custom Attributes | [source code](https://github.com/googleapis/nodejs-pubsub/blob/main/samples/listenWithCustomAttributes.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-pubsub&page=editor&open_in_editor=samples/listenWithCustomAttributes.js,samples/README.md) |
| Subscribe with OpenTelemetry Tracing | [source code](https://github.com/googleapis/nodejs-pubsub/blob/main/samples/listenWithOpenTelemetryTracing.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-pubsub&page=editor&open_in_editor=samples/listenWithOpenTelemetryTracing.js,samples/README.md) |
| Modify Push Configuration | [source code](https://github.com/googleapis/nodejs-pubsub/blob/main/samples/modifyPushConfig.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-pubsub&page=editor&open_in_editor=samples/modifyPushConfig.js,samples/README.md) |
| OpenTelemetry Tracing | [source code](https://github.com/googleapis/nodejs-pubsub/blob/main/samples/openTelemetryTracing.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-pubsub&page=editor&open_in_editor=samples/openTelemetryTracing.js,samples/README.md) |
| Publish Avro Records to a Topic | [source code](https://github.com/googleapis/nodejs-pubsub/blob/main/samples/publishAvroRecords.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-pubsub&page=editor&open_in_editor=samples/publishAvroRecords.js,samples/README.md) |
| Publish Batched Messages | [source code](https://github.com/googleapis/nodejs-pubsub/blob/main/samples/publishBatchedMessages.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-pubsub&page=editor&open_in_editor=samples/publishBatchedMessages.js,samples/README.md) |
| Publish Message | [source code](https://github.com/googleapis/nodejs-pubsub/blob/main/samples/publishMessage.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-pubsub&page=editor&open_in_editor=samples/publishMessage.js,samples/README.md) |
| Publish Message With Custom Attributes | [source code](https://github.com/googleapis/nodejs-pubsub/blob/main/samples/publishMessageWithCustomAttributes.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-pubsub&page=editor&open_in_editor=samples/publishMessageWithCustomAttributes.js,samples/README.md) |
| Publish Ordered Message | [source code](https://github.com/googleapis/nodejs-pubsub/blob/main/samples/publishOrderedMessage.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-pubsub&page=editor&open_in_editor=samples/publishOrderedMessage.js,samples/README.md) |
| Publish Protobuf Messages to a Topic | [source code](https://github.com/googleapis/nodejs-pubsub/blob/main/samples/publishProtobufMessages.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-pubsub&page=editor&open_in_editor=samples/publishProtobufMessages.js,samples/README.md) |
| Publish with flow control | [source code](https://github.com/googleapis/nodejs-pubsub/blob/main/samples/publishWithFlowControl.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-pubsub&page=editor&open_in_editor=samples/publishWithFlowControl.js,samples/README.md) |
| Publish with OpenTelemetry Tracing | [source code](https://github.com/googleapis/nodejs-pubsub/blob/main/samples/publishWithOpenTelemetryTracing.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-pubsub&page=editor&open_in_editor=samples/publishWithOpenTelemetryTracing.js,samples/README.md) |
| Publish With Retry Settings | [source code](https://github.com/googleapis/nodejs-pubsub/blob/main/samples/publishWithRetrySettings.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-pubsub&page=editor&open_in_editor=samples/publishWithRetrySettings.js,samples/README.md) |
| Quickstart | [source code](https://github.com/googleapis/nodejs-pubsub/blob/main/samples/quickstart.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-pubsub&page=editor&open_in_editor=samples/quickstart.js,samples/README.md) |
| Remove Dead Letter Policy | [source code](https://github.com/googleapis/nodejs-pubsub/blob/main/samples/removeDeadLetterPolicy.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-pubsub&page=editor&open_in_editor=samples/removeDeadLetterPolicy.js,samples/README.md) |
Expand Down
7 changes: 4 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -51,8 +51,8 @@
"@google-cloud/precise-date": "^4.0.0",
"@google-cloud/projectify": "^4.0.0",
"@google-cloud/promisify": "^4.0.0",
"@opentelemetry/api": "~1.8.0",
"@opentelemetry/semantic-conventions": "~1.21.0",
"@opentelemetry/api": "~1.9.0",
"@opentelemetry/semantic-conventions": "~1.25.1",
"arrify": "^2.0.0",
"extend": "^3.0.2",
"google-auth-library": "^9.3.0",
Expand All @@ -64,7 +64,8 @@
},
"devDependencies": {
"@grpc/proto-loader": "^0.7.0",
"@opentelemetry/tracing": "^0.24.0",
"@opentelemetry/core": "^1.17.0",
"@opentelemetry/sdk-trace-base": "^1.17.0",
"@types/duplexify": "^3.6.4",
"@types/extend": "^3.0.0",
"@types/lodash.snakecase": "^4.1.6",
Expand Down
3 changes: 3 additions & 0 deletions protos/protos.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

42 changes: 31 additions & 11 deletions samples/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -60,15 +60,16 @@ guides.
* [Listen with exactly-once delivery](#listen-with-exactly-once-delivery)
* [Listen For Protobuf Messages](#listen-for-protobuf-messages)
* [Listen For Messages With Custom Attributes](#listen-for-messages-with-custom-attributes)
* [Subscribe with OpenTelemetry Tracing](#subscribe-with-opentelemetry-tracing)
* [Modify Push Configuration](#modify-push-configuration)
* [OpenTelemetry Tracing](#opentelemetry-tracing)
* [Publish Avro Records to a Topic](#publish-avro-records-to-a-topic)
* [Publish Batched Messages](#publish-batched-messages)
* [Publish Message](#publish-message)
* [Publish Message With Custom Attributes](#publish-message-with-custom-attributes)
* [Publish Ordered Message](#publish-ordered-message)
* [Publish Protobuf Messages to a Topic](#publish-protobuf-messages-to-a-topic)
* [Publish with flow control](#publish-with-flow-control)
* [Publish with OpenTelemetry Tracing](#publish-with-opentelemetry-tracing)
* [Publish With Retry Settings](#publish-with-retry-settings)
* [Quickstart](#quickstart)
* [Remove Dead Letter Policy](#remove-dead-letter-policy)
Expand Down Expand Up @@ -862,37 +863,37 @@ __Usage:__



### Modify Push Configuration
### Subscribe with OpenTelemetry Tracing

Modifies the configuration of an existing push subscription.
Demonstrates how to enable OpenTelemetry tracing in a subscriber.

View the [source code](https://github.com/googleapis/nodejs-pubsub/blob/main/samples/modifyPushConfig.js).
View the [source code](https://github.com/googleapis/nodejs-pubsub/blob/main/samples/listenWithOpenTelemetryTracing.js).

[![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-pubsub&page=editor&open_in_editor=samples/modifyPushConfig.js,samples/README.md)
[![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-pubsub&page=editor&open_in_editor=samples/listenWithOpenTelemetryTracing.js,samples/README.md)

__Usage:__


`node modifyPushConfig.js <topic-name-or-id> <subscription-name-or-id>`
`node listenWithOpenTelemetryTracing.js <subscription-name-or-id>`


-----




### OpenTelemetry Tracing
### Modify Push Configuration

Demonstrates how to enable OpenTelemetry tracing in a publisher or subscriber.
Modifies the configuration of an existing push subscription.

View the [source code](https://github.com/googleapis/nodejs-pubsub/blob/main/samples/openTelemetryTracing.js).
View the [source code](https://github.com/googleapis/nodejs-pubsub/blob/main/samples/modifyPushConfig.js).

[![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-pubsub&page=editor&open_in_editor=samples/openTelemetryTracing.js,samples/README.md)
[![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-pubsub&page=editor&open_in_editor=samples/modifyPushConfig.js,samples/README.md)

__Usage:__


`node openTelemetryTracing.js <topic-name-or-id> <subscription-name-or-id>`
`node modifyPushConfig.js <topic-name-or-id> <subscription-name-or-id>`


-----
Expand Down Expand Up @@ -1033,6 +1034,25 @@ __Usage:__



### Publish with OpenTelemetry Tracing

Demonstrates how to enable OpenTelemetry tracing in a publisher.

View the [source code](https://github.com/googleapis/nodejs-pubsub/blob/main/samples/publishWithOpenTelemetryTracing.js).

[![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-pubsub&page=editor&open_in_editor=samples/publishWithOpenTelemetryTracing.js,samples/README.md)

__Usage:__


`node openTelemetryTracing.js <topic-name-or-id>`


-----




### Publish With Retry Settings

Publishes a message to a topic with retry settings.
Expand Down
134 changes: 134 additions & 0 deletions samples/listenWithOpenTelemetryTracing.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,134 @@
// Copyright 2020-2024 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

// This is a generated sample, using the typeless sample bot. Please
// look for the source TypeScript sample (.ts) for modifications.
'use strict';

/**
* This sample demonstrates how to add OpenTelemetry tracing to the
* Google Cloud Pub/Sub API.
*
* For more information, see the README.md under /pubsub and the documentation
* at https://cloud.google.com/pubsub/docs.
*/

// sample-metadata:
// title: Subscribe with OpenTelemetry Tracing
// description: Demonstrates how to enable OpenTelemetry tracing in a subscriber.
// usage: node listenWithOpenTelemetryTracing.js <subscription-name-or-id>

const OTEL_TIMEOUT = 2;
const SUBSCRIBER_TIMEOUT = 10;

// [START pubsub_subscribe_otel_tracing]
/**
* TODO(developer): Uncomment these variables before running the sample.
*/
// const subscriptionNameOrId = 'YOUR_SUBSCRIPTION_OR_ID';

// Imports the Google Cloud client library
const {PubSub} = require('@google-cloud/pubsub');

// Imports the OpenTelemetry API
const {NodeTracerProvider} = require('@opentelemetry/sdk-trace-node');
const {diag, DiagConsoleLogger, DiagLogLevel} = require('@opentelemetry/api');
const {SimpleSpanProcessor} = require('@opentelemetry/sdk-trace-base');

// To output to the console for testing, use the ConsoleSpanExporter.
// import {ConsoleSpanExporter} from '@opentelemetry/sdk-trace-base';

// To output to Cloud Trace, import the OpenTelemetry bridge library.
const {
TraceExporter,
} = require('@google-cloud/opentelemetry-cloud-trace-exporter');

const {Resource} = require('@opentelemetry/resources');
const {
SEMRESATTRS_SERVICE_NAME,
} = require('@opentelemetry/semantic-conventions');

// Enable the diagnostic logger for OpenTelemetry
diag.setLogger(new DiagConsoleLogger(), DiagLogLevel.DEBUG);

// Log spans out to the console, for testing.
// const exporter = new ConsoleSpanExporter();

// Log spans out to Cloud Trace, for production.
const exporter = new TraceExporter();

// Build a tracer provider and a span processor to do
// something with the spans we're generating.
const provider = new NodeTracerProvider({
resource: new Resource({
[SEMRESATTRS_SERVICE_NAME]: 'otel subscriber example',
}),
});
const processor = new SimpleSpanProcessor(exporter);
provider.addSpanProcessor(processor);
provider.register();

// Creates a client; cache this for further use.
const pubSubClient = new PubSub({enableOpenTelemetryTracing: true});

async function subscriptionListen(subscriptionNameOrId) {
const subscriber = pubSubClient.subscription(subscriptionNameOrId);

// Message handler for subscriber
const messageHandler = async message => {
console.log(`Message ${message.id} received.`);
message.ack();
};

// Error handler for subscriber
const errorHandler = async error => {
console.log('Received error:', error);
};

// Listens for new messages from the topic
subscriber.on('message', messageHandler);
subscriber.on('error', errorHandler);

// Ensures that all spans got flushed by the exporter. This function
// is in service to making sure that any buffered Pub/Sub messages
// and/or OpenTelemetry spans are properly flushed to the server
// side. In normal usage, you'd only need to do something like this
// on process shutdown.
async function shutdown() {
await subscriber.close();
await processor.forceFlush();
await new Promise(r => setTimeout(r, OTEL_TIMEOUT * 1000));
}

// Wait a bit for the subscription to receive messages, then shut down
// gracefully. This is for the sample only; normally you would not need
// this delay.
await new Promise(r =>
setTimeout(async () => {
subscriber.removeAllListeners();
await shutdown();
r();
}, SUBSCRIBER_TIMEOUT * 1000)
);
}
// [END pubsub_subscribe_otel_tracing]

function main(subscriptionNameOrId = 'YOUR_SUBSCRIPTION_NAME_OR_ID') {
subscriptionListen(subscriptionNameOrId).catch(err => {
console.error(err.message);
process.exitCode = 1;
});
}

main(...process.argv.slice(2));
Loading
Loading