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

pubsub.publish is a bit verbose if I just want to send a simple string message? #629

Closed
jgeewax opened this issue May 26, 2015 · 13 comments
Closed
Assignees
Labels
api: pubsub Issues related to the Pub/Sub API.

Comments

@jgeewax
Copy link
Contributor

jgeewax commented May 26, 2015

Feels like if I just want to publish the message "Hello World" I have a lot more to know that I probably should, right?

var gcloud = require(‘gcloud’)({projectId: ‘my-project’, keyFile: ‘key.json’});
var pubsub = gcloud.pubsub();

pubsub.createTopic(‘Test’, function(err, topic) {
  console.log(‘Created topic’, topic);

  topic.publish({data: ‘Hello World!}, function(err, messageIds) {
    console.log(‘Published message’, messageIds);
  });
});

Any chance we can simplify the string-only message?

var gcloud = require(‘gcloud’)({projectId: ‘my-project’, keyFile: ‘key.json’});
var pubsub = gcloud.pubsub();

pubsub.createTopic(‘Test’, function(err, topic) {
  console.log(‘Created topic’, topic);

  topic.publishString('Hello World!', function(err, messageId) {
    console.log('Published message', messageId);
  });
});

Or even better, just detect if someone sent us a string only...

var gcloud = require(‘gcloud’)({projectId: ‘my-project’, keyFile: ‘key.json’});
var pubsub = gcloud.pubsub();

pubsub.createTopic(‘Test’, function(err, topic) {
  console.log(‘Created topic’, topic);

  topic.publish('Hello World!', function(err, messageId) {
    console.log('Published message', messageId);
  });
});
@jgeewax jgeewax added enhancement api: pubsub Issues related to the Pub/Sub API. labels May 26, 2015
@jgeewax jgeewax added this to the Pub/Sub Stable milestone May 26, 2015
@ryanseys
Copy link
Contributor

We did this because if they publish a message as a string this way, and we want to support publishing an object with the same ease, they suddenly would need to wrap it around { data: message } which is confusing and inconsistent. Also it means that the message they receive on the other end doesn't match what they initially published.

@jgeewax
Copy link
Contributor Author

jgeewax commented May 26, 2015

I remember us talking about this one, can you remind me of the code that we write that brings about the key issue?

I'm thinking that this would be a "shortcut" for {data: 'Hello World'}...

@ryanseys
Copy link
Contributor

Related #500. This functionality was removed when we removed support for topic#publishRaw and moved all functionality into topic#publish. I think it's do-able to bring it back. Thoughts @stephenplusplus ?

@stephenplusplus
Copy link
Contributor

It should be fine to do. The downside is the magic that an all in one method would have. If it publishes strings or specially-formed objects, this might be confusing to document and have the user understand. If it publishes strings, why not a numeric counter, buffer, or object? I still think a plain JavaScript object is the most popular type to be published in a JS Pub/Sub pattern (no idea if that's true or not), and wish we could support that more easily as well.

@jgeewax
Copy link
Contributor Author

jgeewax commented May 26, 2015

That might be why we can offer a special method? publishString('Hello World')? or publishObject({key: 'val'})?

@stephenplusplus
Copy link
Contributor

I still like the reverse... publish takes anything with type detection, publishRaw takes the raw format. Why did we axe that behavior again? Is there anyway we can make that work?

@ryanseys
Copy link
Contributor

Found the reason deep in the hidden conversation of this PR (damn GitHub for hiding convos on outdated commits): #388 (comment)

@stephenplusplus
Copy link
Contributor

Can you sum up the reason, I'm not sure I was able to grasp from that thread. I think if we change publishRaw to look like publish now, and publish to take any data type, we can send it to publishRaw in the data property.

@ryanseys
Copy link
Contributor

I propose the following simplification that I believe is a balance between ease of use, functionality and clarity:

/**
 * @param {string|string[]|object|object[]} message - The message(s) to publish. If given as a 
 *    string, the message will be published simply as given. If an object is provided, the object
 *    must include data and attribute fields described in the parameters below. You may also 
 *    provide an array of these strings or objects to publish multiple messages. See the 
 *    provided examples for more information.
 * @param {*} message.data - The contents of the message.
 * @param {array=} message.attributes - Key/value pair of attributes to apply to
 *     the message. All values must be strings.
 * @param {function=} callback - The callback function.
 */
Topic.prototype.publish = function() { /* ... */ }

Examples:

// publish a single string message (typeof message === 'string')
topic.publish('message', callback);

// publish multiple string messages (typeof message === 'string')
topic.publish([ 'message1', 'message2' ], callback);

// publish a single raw message (typeof message === 'object') [same as existing impl.]
topic.publish({ data: x, attributes: y }, callback);

// publish multiple raw messages (typeof message === 'object') [same as existing impl.]
topic.publish([{ data: w, attributes: x }, { data: y, attributes: z }], callback);

@ryanseys
Copy link
Contributor

This is where the examples are VERY IMPORTANT because the JSDoc is kinda cryptic. I think that's cool as long as we have great examples.

@stephenplusplus
Copy link
Contributor

It's basically strings or "raw". I think we should support at least objects the same, or it's just weird. Developers will most often forget to box in their data as "data", and it's just an annoying step. If we force that boxing for all values like now, at least it's consistent. But, to offer magic string behavior and force boxing for all others from the same method is confusing.

I think it's most straightforward and predictable to accept any value to publish, and patch it to publishRaw (which would just do the boxing and message formatting for us).

@stephenplusplus
Copy link
Contributor

This issue needs some updating. @jgeewax's original issue showed the use case for publishing a message on a brand new topic. We've found out since this issue that publishing a message to a topic without subscribers results in the message being dropped. So, we should only be considering the steps to publish a message to a topic that already exists.

var pubsub = gcloud.pubsub();
var topic = pubsub.topic('test');

topic.publish({ data: 'Hello World!' }, function(err, messageId) {
  console.log('Published message', messageId);
});

We should be able to support strings:

topic.publish('Hello World!', function(err, messageId) {/*...*/});

Another option would be to box in any data (strings, numbers, or objects) passed to publish by default (breaking change):

topic.publish({
  userId: 3,
  name: 'Stephen'
}, function(err, messageId) {/*...*/});

// The message that gets published to the API:
{
  data: {
    userId: 3,
    name: 'Stephen'
  }
}

... and allow turning off the auto-boxing if you need to use attributes:

var message = {
  data: {
    userId: 3,
    name: 'Stephen'
  },
  attributes: {
    source: 'github'
  }
};

topic.publish(message, { raw: true }, function(err, messageId) {/*...*/});

// The message that gets published to the API:
{
  userId: 3,
  name: 'Stephen',
  attributes: {
    source: 'github'
  }
}

@jgeewax @callmehiphop - wdyt?

@callmehiphop
Copy link
Contributor

@stephenplusplus LGTM

@stephenplusplus stephenplusplus self-assigned this Jan 29, 2016
@stephenplusplus stephenplusplus modified the milestones: 1.0, Pub/Sub Stable Sep 26, 2016
sofisl pushed a commit that referenced this issue Oct 11, 2022
[![WhiteSource Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [sinon](https://sinonjs.org/) ([source](https://togithub.com/sinonjs/sinon)) | [`^11.0.0` -> `^12.0.0`](https://renovatebot.com/diffs/npm/sinon/11.1.2/12.0.1) | [![age](https://badges.renovateapi.com/packages/npm/sinon/12.0.1/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/npm/sinon/12.0.1/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/npm/sinon/12.0.1/compatibility-slim/11.1.2)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/npm/sinon/12.0.1/confidence-slim/11.1.2)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>sinonjs/sinon</summary>

### [`v12.0.1`](https://togithub.com/sinonjs/sinon/blob/master/CHANGES.md#&#8203;1201)

[Compare Source](https://togithub.com/sinonjs/sinon/compare/v12.0.0...v12.0.1)

-   [`3f598221`](https://togithub.com/sinonjs/sinon/commit/3f598221045904681f2b3b3ba1df617ed5e230e3)
    Fix issue with npm unlink for npm version > 6 (Carl-Erik Kopseng)
    > 'npm unlink' would implicitly unlink the current dir
    > until version 7, which requires an argument
-   [`51417a38`](https://togithub.com/sinonjs/sinon/commit/51417a38111eeeb7cd14338bfb762cc2df487e1b)
    Fix bundling of cjs module ([#&#8203;2412](https://togithub.com/sinonjs/sinon/issues/2412)) (Julian Grinblat)
    > -   Fix bundling of cjs module
    >
    > -   Run prettier

*Released by [Carl-Erik Kopseng](https://togithub.com/fatso83) on 2021-11-04.*

#### 12.0.0

### [`v12.0.0`](https://togithub.com/sinonjs/sinon/compare/v11.1.2...v12.0.0)

[Compare Source](https://togithub.com/sinonjs/sinon/compare/v11.1.2...v12.0.0)

</details>

---

### Configuration

📅 **Schedule**: "after 9am and before 3pm" (UTC).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, click this checkbox.

---

This PR has been generated by [WhiteSource Renovate](https://renovate.whitesourcesoftware.com). View repository job log [here](https://app.renovatebot.com/dashboard#github/googleapis/nodejs-language).
sofisl pushed a commit that referenced this issue Oct 13, 2022
[![WhiteSource Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [sinon](https://sinonjs.org/) ([source](https://togithub.com/sinonjs/sinon)) | [`^11.0.0` -> `^12.0.0`](https://renovatebot.com/diffs/npm/sinon/11.1.2/12.0.1) | [![age](https://badges.renovateapi.com/packages/npm/sinon/12.0.1/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/npm/sinon/12.0.1/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/npm/sinon/12.0.1/compatibility-slim/11.1.2)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/npm/sinon/12.0.1/confidence-slim/11.1.2)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>sinonjs/sinon</summary>

### [`v12.0.1`](https://togithub.com/sinonjs/sinon/blob/master/CHANGES.md#&#8203;1201)

[Compare Source](https://togithub.com/sinonjs/sinon/compare/v12.0.0...v12.0.1)

-   [`3f598221`](https://togithub.com/sinonjs/sinon/commit/3f598221045904681f2b3b3ba1df617ed5e230e3)
    Fix issue with npm unlink for npm version > 6 (Carl-Erik Kopseng)
    > 'npm unlink' would implicitly unlink the current dir
    > until version 7, which requires an argument
-   [`51417a38`](https://togithub.com/sinonjs/sinon/commit/51417a38111eeeb7cd14338bfb762cc2df487e1b)
    Fix bundling of cjs module ([#&#8203;2412](https://togithub.com/sinonjs/sinon/issues/2412)) (Julian Grinblat)
    > -   Fix bundling of cjs module
    >
    > -   Run prettier

*Released by [Carl-Erik Kopseng](https://togithub.com/fatso83) on 2021-11-04.*

#### 12.0.0

### [`v12.0.0`](https://togithub.com/sinonjs/sinon/compare/v11.1.2...v12.0.0)

[Compare Source](https://togithub.com/sinonjs/sinon/compare/v11.1.2...v12.0.0)

</details>

---

### Configuration

📅 **Schedule**: "after 9am and before 3pm" (UTC).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, click this checkbox.

---

This PR has been generated by [WhiteSource Renovate](https://renovate.whitesourcesoftware.com). View repository job log [here](https://app.renovatebot.com/dashboard#github/googleapis/nodejs-language).
sofisl pushed a commit that referenced this issue Nov 11, 2022
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [@types/node](https://togithub.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node) ([source](https://togithub.com/DefinitelyTyped/DefinitelyTyped)) | [`^16.0.0` -> `^18.0.0`](https://renovatebot.com/diffs/npm/@types%2fnode/16.18.3/18.11.9) | [![age](https://badges.renovateapi.com/packages/npm/@types%2fnode/18.11.9/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/npm/@types%2fnode/18.11.9/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/npm/@types%2fnode/18.11.9/compatibility-slim/16.18.3)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/npm/@types%2fnode/18.11.9/confidence-slim/16.18.3)](https://docs.renovatebot.com/merge-confidence/) |

---

### Configuration

📅 **Schedule**: Branch creation - "after 9am and before 3pm" (UTC), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://app.renovatebot.com/dashboard#github/googleapis/nodejs-dataproc).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzMi4yNDEuMTEiLCJ1cGRhdGVkSW5WZXIiOiIzNC4xMS4xIn0=-->
sofisl pushed a commit that referenced this issue Nov 11, 2022
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [uuid](https://togithub.com/uuidjs/uuid) | [`^8.0.0` -> `^9.0.0`](https://renovatebot.com/diffs/npm/uuid/8.3.2/9.0.0) | [![age](https://badges.renovateapi.com/packages/npm/uuid/9.0.0/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/npm/uuid/9.0.0/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/npm/uuid/9.0.0/compatibility-slim/8.3.2)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/npm/uuid/9.0.0/confidence-slim/8.3.2)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>uuidjs/uuid</summary>

### [`v9.0.0`](https://togithub.com/uuidjs/uuid/blob/HEAD/CHANGELOG.md#&#8203;900-httpsgithubcomuuidjsuuidcomparev832v900-2022-09-05)

[Compare Source](https://togithub.com/uuidjs/uuid/compare/v8.3.2...v9.0.0)

##### ⚠ BREAKING CHANGES

-   Drop Node.js 10.x support. This library always aims at supporting one EOLed LTS release which by this time now is 12.x which has reached EOL 30 Apr 2022.

-   Remove the minified UMD build from the package.

    Minified code is hard to audit and since this is a widely used library it seems more appropriate nowadays to optimize for auditability than to ship a legacy module format that, at best, serves educational purposes nowadays.

    For production browser use cases, users should be using a bundler. For educational purposes, today's online sandboxes like replit.com offer convenient ways to load npm modules, so the use case for UMD through repos like UNPKG or jsDelivr has largely vanished.

-   Drop IE 11 and Safari 10 support. Drop support for browsers that don't correctly implement const/let and default arguments, and no longer transpile the browser build to ES2015.

    This also removes the fallback on msCrypto instead of the crypto API.

    Browser tests are run in the first supported version of each supported browser and in the latest (as of this commit) version available on Browserstack.

##### Features

-   optimize uuid.v1 by 1.3x uuid.v4 by 4.3x (430%) ([#&#8203;597](https://togithub.com/uuidjs/uuid/issues/597)) ([3a033f6](https://togithub.com/uuidjs/uuid/commit/3a033f6bab6bb3780ece6d645b902548043280bc))
-   remove UMD build ([#&#8203;645](https://togithub.com/uuidjs/uuid/issues/645)) ([e948a0f](https://togithub.com/uuidjs/uuid/commit/e948a0f22bf22f4619b27bd913885e478e20fe6f)), closes [#&#8203;620](https://togithub.com/uuidjs/uuid/issues/620)
-   use native crypto.randomUUID when available ([#&#8203;600](https://togithub.com/uuidjs/uuid/issues/600)) ([c9e076c](https://togithub.com/uuidjs/uuid/commit/c9e076c852edad7e9a06baaa1d148cf4eda6c6c4))

##### Bug Fixes

-   add Jest/jsdom compatibility ([#&#8203;642](https://togithub.com/uuidjs/uuid/issues/642)) ([16f9c46](https://togithub.com/uuidjs/uuid/commit/16f9c469edf46f0786164cdf4dc980743984a6fd))
-   change default export to named function ([#&#8203;545](https://togithub.com/uuidjs/uuid/issues/545)) ([c57bc5a](https://togithub.com/uuidjs/uuid/commit/c57bc5a9a0653273aa639cda9177ce52efabe42a))
-   handle error when parameter is not set in v3 and v5 ([#&#8203;622](https://togithub.com/uuidjs/uuid/issues/622)) ([fcd7388](https://togithub.com/uuidjs/uuid/commit/fcd73881692d9fabb63872576ba28e30ff852091))
-   run npm audit fix ([#&#8203;644](https://togithub.com/uuidjs/uuid/issues/644)) ([04686f5](https://togithub.com/uuidjs/uuid/commit/04686f54c5fed2cfffc1b619f4970c4bb8532353))
-   upgrading from uuid3 broken link ([#&#8203;568](https://togithub.com/uuidjs/uuid/issues/568)) ([1c849da](https://togithub.com/uuidjs/uuid/commit/1c849da6e164259e72e18636726345b13a7eddd6))

##### build

-   drop Node.js 8.x from babel transpile target ([#&#8203;603](https://togithub.com/uuidjs/uuid/issues/603)) ([aa11485](https://togithub.com/uuidjs/uuid/commit/aa114858260402107ec8a1e1a825dea0a259bcb5))

-   drop support for legacy browsers (IE11, Safari 10) ([#&#8203;604](https://togithub.com/uuidjs/uuid/issues/604)) ([0f433e5](https://togithub.com/uuidjs/uuid/commit/0f433e5ec444edacd53016de67db021102f36148))

-   drop node 10.x to upgrade dev dependencies ([#&#8203;653](https://togithub.com/uuidjs/uuid/issues/653)) ([28a5712](https://togithub.com/uuidjs/uuid/commit/28a571283f8abda6b9d85e689f95b7d3ee9e282e)), closes [#&#8203;643](https://togithub.com/uuidjs/uuid/issues/643)

##### [8.3.2](https://togithub.com/uuidjs/uuid/compare/v8.3.1...v8.3.2) (2020-12-08)

##### Bug Fixes

-   lazy load getRandomValues ([#&#8203;537](https://togithub.com/uuidjs/uuid/issues/537)) ([16c8f6d](https://togithub.com/uuidjs/uuid/commit/16c8f6df2f6b09b4d6235602d6a591188320a82e)), closes [#&#8203;536](https://togithub.com/uuidjs/uuid/issues/536)

##### [8.3.1](https://togithub.com/uuidjs/uuid/compare/v8.3.0...v8.3.1) (2020-10-04)

##### Bug Fixes

-   support expo>=39.0.0 ([#&#8203;515](https://togithub.com/uuidjs/uuid/issues/515)) ([c65a0f3](https://togithub.com/uuidjs/uuid/commit/c65a0f3fa73b901959d638d1e3591dfacdbed867)), closes [#&#8203;375](https://togithub.com/uuidjs/uuid/issues/375)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "after 9am and before 3pm" (UTC), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, click this checkbox.

---

This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://app.renovatebot.com/dashboard#github/googleapis/nodejs-monitoring).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzMi4xOTEuMCIsInVwZGF0ZWRJblZlciI6IjMyLjE5MS4wIn0=-->
sofisl pushed a commit that referenced this issue Nov 17, 2022
sofisl pushed a commit that referenced this issue Jan 10, 2023
sofisl pushed a commit that referenced this issue Jan 24, 2023
Source-Author: F. Hinkelmann <[email protected]>
Source-Date: Tue Jul 21 10:53:20 2020 -0400
Source-Repo: googleapis/synthtool
Source-Sha: 99c93fe09f8c1dca09dfc0301c8668e3a70dd796
Source-Link: googleapis/synthtool@99c93fe
sofisl pushed a commit that referenced this issue Jan 25, 2023
Source-Author: F. Hinkelmann <[email protected]>
Source-Date: Tue Jul 21 10:53:20 2020 -0400
Source-Repo: googleapis/synthtool
Source-Sha: 99c93fe09f8c1dca09dfc0301c8668e3a70dd796
Source-Link: googleapis/synthtool@99c93fe
sofisl pushed a commit that referenced this issue Sep 13, 2023
- [ ] Regenerate this pull request now.

PiperOrigin-RevId: 470911839

Source-Link: googleapis/googleapis@3527566

Source-Link: googleapis/googleapis-gen@f16a1d2
Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiZjE2YTFkMjI0ZjAwYTYzMGVhNDNkNmE5YTFhMzFmNTY2ZjQ1Y2RlYSJ9

feat: accept google-gax instance as a parameter
Please see the documentation of the client constructor for details.

PiperOrigin-RevId: 470332808

Source-Link: googleapis/googleapis@d4a2367

Source-Link: googleapis/googleapis-gen@e97a1ac
Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiZTk3YTFhYzIwNGVhZDRmZTczNDFmOTFlNzJkYjdjNmFjNjAxNjM0MSJ9
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
api: pubsub Issues related to the Pub/Sub API.
Projects
None yet
Development

No branches or pull requests

4 participants