Google Cloud Pub/Sub: Node.js Client
Cloud Pub/Sub is a fully-managed real-time messaging service that allows you to send and receive messages between independent applications.
This document contains links to an API reference , samples, and other resources useful to developing Node.js applications. For additional help developing Pub/Sub applications, in Node.js and other languages, see our Pub/Sub quickstart , publisher , and subscriber guides.
A comprehensive list of changes in each version may be found in the CHANGELOG .
- Google Cloud Pub/Sub Node.js Client API Reference
- Google Cloud Pub/Sub Documentation
- github.com/googleapis/nodejs-pubsub
Read more about the client libraries for Cloud APIs, including the older Google APIs Client Libraries, in Client Libraries Explained .
Table of contents:
Quickstart
Before you begin
- Select or create a Cloud Platform project .
- Enable billing for your project .
- Enable the Google Cloud Pub/Sub API .
- Set up authentication with a service account so you can access the API from your local workstation.
Installing the client library
npm install @google-cloud/pubsub
Using the client library
// Imports the Google Cloud client library
const {PubSub} = require(' @google-cloud/pubsub
');
async function quickstart(
projectId = 'your-project-id', // Your Google Cloud Platform project ID
topicNameOrId = 'my-topic', // Name for the new topic to create
subscriptionName = 'my-sub' // Name for the new subscription to create
) {
// Instantiates a client
const pubsub = new PubSub
({projectId});
// Creates a new topic
const [topic] = await pubsub.createTopic(topicNameOrId);
console.log(`Topic ${topic.name} created.`);
// Creates a subscription on that new topic
const [subscription] = await topic.createSubscription(subscriptionName);
// Receive callbacks for new messages on the subscription
subscripti on
. on
('message', message => {
console.log('Received message:', message.data.toString());
process.exit(0);
});
// Receive callbacks for errors on the subscription
subscripti on
. on
('error', error => {
console.error('Received error:', error);
process.exit(1);
});
// Send a message to the topic
topic. publishMessage
({data: Buffer. from
('Test message!')});
}
Running gRPC C++ bindings
For some workflows and environments it might make sense to use the C++ gRPC implementation, instead of the default one (see: #770 ):
To configure @google-cloud/pubsub
to use an alternative grpc
transport:
-
npm install grpc
, addinggrpc
as a dependency. -
instantiate
@google-cloud/pubsub
withgrpc
:const {PubSub} = require(' @google-cloud/pubsub '); const grpc = require('grpc'); const pubsub = new PubSub ({grpc});
Samples
Samples are in the samples/
directory. Each sample's README.md
has instructions for running its sample.
Sample | Source Code | Try it |
---|---|---|
Commit an Avro-Based Schema
|
source code | ![]() |
Commit an Proto-Based Schema
|
source code | ![]() |
Create an Avro based Schema
|
source code | ![]() |
Create BigQuery Subscription
|
source code | ![]() |
Create a Proto based Schema
|
source code | ![]() |
Create Push Subscription
|
source code | ![]() |
Create Push Subscription With No Wrapper
|
source code | ![]() |
Create Subscription
|
source code | ![]() |
Create Subscription With Dead Letter Policy
|
source code | ![]() |
Create an exactly-once delivery subscription
|
source code | ![]() |
Create Subscription With Filtering
|
source code | ![]() |
Create Subscription with ordering enabled
|
source code | ![]() |
Create Subscription With Retry Policy
|
source code | ![]() |
Create Topic
|
source code | ![]() |
Create Topic With Schema
|
source code | ![]() |
Create Topic With Schema Revisions
|
source code | ![]() |
Delete a previously created schema
|
source code | ![]() |
Delete a Schema Revision
|
source code | ![]() |
Delete Subscription
|
source code | ![]() |
Delete Topic
|
source code | ![]() |
Detach Subscription
|
source code | ![]() |
Get a previously created schema
|
source code | ![]() |
Get a previously created schema revision
|
source code | ![]() |
Get Subscription
|
source code | ![]() |
Get Subscription Policy
|
source code | ![]() |
Get Topic Policy
|
source code | ![]() |
List All Topics
|
source code | ![]() |
List Revisions on a Schema
|
source code | ![]() |
List schemas on a project
|
source code | ![]() |
List Subscriptions
|
source code | ![]() |
List Subscriptions On a Topic
|
source code | ![]() |
Listen For Avro Records
|
source code | ![]() |
Listen For Avro Records With Revisions
|
source code | ![]() |
Listen For Errors
|
source code | ![]() |
Listen For Messages
|
source code | ![]() |
Listen with exactly-once delivery
|
source code | ![]() |
Listen For Protobuf Messages
|
source code | ![]() |
Listen For Messages With Custom Attributes
|
source code | ![]() |
Modify Push Configuration
|
source code | ![]() |
OpenTelemetry Tracing
|
source code | ![]() |
Publish Avro Records to a Topic
|
source code | ![]() |
Publish Batched Messages
|
source code | ![]() |
Publish Message
|
source code | ![]() |
Publish Message With Custom Attributes
|
source code | ![]() |
Publish Ordered Message
|
source code | ![]() |
Publish Protobuf Messages to a Topic
|
source code | ![]() |
Publish with flow control
|
source code | ![]() |
Publish With Retry Settings
|
source code | ![]() |
Quickstart
|
source code | ![]() |
Remove Dead Letter Policy
|
source code | ![]() |
Resume Publish
|
source code | ![]() |
Rollback a Schema
|
source code | ![]() |
Set Subscription IAM Policy
|
source code | ![]() |
Set Topic IAM Policy
|
source code | ![]() |
Subscribe With Flow Control Settings
|
source code | ![]() |
Synchronous Pull
|
source code | ![]() |
Synchronous Pull with delivery attempt.
|
source code | ![]() |
Synchronous Pull With Lease Management
|
source code | ![]() |
Test Subscription Permissions
|
source code | ![]() |
Test Topic Permissions
|
source code | ![]() |
Update Dead Letter Policy
|
source code | ![]() |
Update Topic Schema
|
source code | ![]() |
Validate a schema definition
|
source code | ![]() |
The Google Cloud Pub/Sub Node.js Client API Reference documentation also contains samples.
Supported Node.js Versions
Our client libraries follow the Node.js release schedule . Libraries are compatible with all current active and maintenance versions of Node.js. If you are using an end-of-life version of Node.js, we recommend that you update as soon as possible to an actively supported LTS version.
Google's client libraries support legacy versions of Node.js runtimes on a best-efforts basis with the following warnings:
- Legacy versions are not tested in continuous integration.
- Some security patches and features cannot be backported.
- Dependencies cannot be kept up-to-date.
Client libraries targeting some end-of-life versions of Node.js are available, and
can be installed through npm dist-tags
.
The dist-tags follow the naming convention legacy-(version)
.
For example, npm install @google-cloud/pubsub@legacy-8
installs client libraries
for versions compatible with Node.js 8.
Versioning
This library follows Semantic Versioning .
This library is considered to be stable. The code surface will not change in backwards-incompatible ways unless absolutely necessary (e.g. because of critical security issues) or with an extensive deprecation period. Issues and requests against stablelibraries are addressed with the highest priority.
More Information: Google Cloud Platform Launch Stages
Contributing
Contributions welcome! See the Contributing Guide .
Please note that this README.md
, the samples/README.md
,
and a variety of configuration files in this repository (including .nycrc
and tsconfig.json
)
are generated from a central template. To edit one of these files, make an edit
to its templates in directory
.
License
Apache Version 2.0
See LICENSE