Product
Socket Now Supports uv.lock Files
Socket now supports uv.lock files to ensure consistent, secure dependency resolution for Python projects and enhance supply chain security.
@google-cloud/pubsub
Advanced tools
The @google-cloud/pubsub npm package is a client library for accessing Google Cloud Pub/Sub, a fully-managed real-time messaging service that allows you to send and receive messages between independent applications. This package provides an easy-to-use API to interact with Google Cloud Pub/Sub and is designed to handle the complexities of the underlying API operations.
Publishing Messages
This feature allows you to publish messages to a topic. The code sample demonstrates how to create a PubSub client, get a reference to a topic, and publish a message to that topic.
const {PubSub} = require('@google-cloud/pubsub');
const pubsub = new PubSub();
const topic = pubsub.topic('my-topic');
const messageBuffer = Buffer.from('Hello, world!');
topic.publish(messageBuffer);
Subscribing to Topics
This feature enables you to subscribe to a topic and receive messages. The code sample shows how to create a PubSub client, get a reference to a subscription, and set up an event handler to process received messages.
const {PubSub} = require('@google-cloud/pubsub');
const pubsub = new PubSub();
const subscription = pubsub.subscription('my-subscription');
subscription.on('message', message => {
console.log('Received message:', message.data.toString());
message.ack();
});
Managing Topics and Subscriptions
This feature covers the management of topics and subscriptions, including creating and deleting them. The code sample illustrates how to create a new topic and delete an existing subscription.
const {PubSub} = require('@google-cloud/pubsub');
const pubsub = new PubSub();
// Create a new topic
pubsub.createTopic('new-topic').then(response => {
console.log('Topic created:', response[0].name);
});
// Delete a subscription
pubsub.subscription('old-subscription').delete();
The AWS SDK for JavaScript provides a similar messaging service through Amazon SNS (Simple Notification Service) and SQS (Simple Queue Service). While AWS SDK supports both pub/sub and queue-based messaging, @google-cloud/pubsub is specifically optimized for Google Cloud's Pub/Sub service.
Azure-sb is a client library for Azure Service Bus, which also supports pub/sub messaging patterns. Compared to @google-cloud/pubsub, azure-sb is tailored for integration with Azure's ecosystem and supports additional features like message sessions and dead-letter queues.
Rascal is an abstraction layer over amqplib for RabbitMQ, a popular open-source message broker. Unlike @google-cloud/pubsub, which is a cloud-native service, Rascal with RabbitMQ can be used both on-premises and in the cloud, offering more flexibility in deployment models.
Cloud Pub/Sub Client Library for Node.js
Looking for more Google APIs than just Pub/Sub? You might want to check out google-cloud
.
$ npm install --save @google-cloud/pubsub
var pubsub = require('@google-cloud/pubsub')({
projectId: 'grape-spaceship-123',
keyFilename: '/path/to/keyfile.json'
});
// Reference a topic that has been previously created.
var topic = pubsub.topic('my-topic');
// Publish a message to the topic.
var publisher = topic.publisher();
var message = new Buffer('New message!');
publisher.publish(message, function(err, messageId) {});
// Subscribe to the topic.
topic.createSubscription('subscription-name', function(err, subscription) {
// Register listeners to start pulling for messages.
function onError(err) {}
function onMessage(message) {}
subscription.on('error', onError);
subscription.on('message', onMessage);
// Remove listeners to stop pulling for messages.
subscription.removeListener('message', onMessage);
subscription.removeListener('error', onError);
});
// Promises are also supported by omitting callbacks.
publisher.publish(message).then(function(data) {
var messageIds = data[0];
});
// It's also possible to integrate with third-party Promise libraries.
var pubsub = require('@google-cloud/pubsub')({
promise: require('bluebird')
});
It's incredibly easy to get authenticated and start using Google's APIs. You can set your credentials on a global basis as well as on a per-API basis. See each individual API section below to see how you can auth on a per-API-basis. This is useful if you want to use different accounts for different Cloud services.
If you are running this client on Google Cloud Platform, we handle authentication for you with no configuration. You just need to make sure that when you set up the GCE instance, you add the correct scopes for the APIs you want to access.
var pubsub = require('@google-cloud/pubsub')();
// ...you're good to go!
If you are not running this client on Google Cloud Platform, you need a Google Developers service account. To create a service account:
var projectId = process.env.GCLOUD_PROJECT; // E.g. 'grape-spaceship-123'
var pubsub = require('@google-cloud/pubsub')({
projectId: projectId,
// The path to your key file:
keyFilename: '/path/to/keyfile.json'
// Or the contents of the key file:
credentials: require('./path/to/keyfile.json')
});
// ...you're good to go!
FAQs
Cloud Pub/Sub Client Library for Node.js
The npm package @google-cloud/pubsub receives a total of 483,594 weekly downloads. As such, @google-cloud/pubsub popularity was classified as popular.
We found that @google-cloud/pubsub demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Product
Socket now supports uv.lock files to ensure consistent, secure dependency resolution for Python projects and enhance supply chain security.
Research
Security News
Socket researchers have discovered multiple malicious npm packages targeting Solana private keys, abusing Gmail to exfiltrate the data and drain Solana wallets.
Security News
PEP 770 proposes adding SBOM support to Python packages to improve transparency and catch hidden non-Python dependencies that security tools often miss.