Publicar y recibir mensajes en Pub/Sub con una biblioteca de cliente
El servicio Pub/Sub permite que las aplicaciones intercambien mensajes de forma fiable, rápida y asíncrona. Esta es la secuencia de eventos:
- Un productor de datos publica un mensaje en un tema de Pub/Sub.
- Un cliente suscriptor crea una suscripción a ese tema y consume mensajes de la suscripción.
Puedes configurar un entorno de Pub/Sub con cualquiera de los siguientes métodos: Google Cloud consola, Cloud Shell, bibliotecas de cliente o APIs REST. En esta página se explica cómo empezar a publicar mensajes con Pub/Sub mediante bibliotecas de cliente.
Pub/Sub ofrece una biblioteca de cliente de alto nivel y otra de bajo nivel generadas automáticamente. De forma predeterminada, como en esta guía de inicio rápido, te recomendamos la biblioteca de cliente de alto nivel.
Para seguir las instrucciones paso a paso de esta tarea directamente en la Google Cloud consola, haga clic en Ayúdame:
Antes de empezar
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
Install the Google Cloud CLI.
-
Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.
-
Para inicializar gcloud CLI, ejecuta el siguiente comando:
gcloud init
-
Create or select a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Pub/Sub API:
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles.gcloud services enable pubsub.googleapis.com
-
Create local authentication credentials for your user account:
gcloud auth application-default login
If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.
-
Grant roles to your user account. Run the following command once for each of the following IAM roles:
roles/pubsub.admin
gcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE
Replace the following:
PROJECT_ID
: your project ID.USER_IDENTIFIER
: the identifier for your user account—for example,myemail@example.com
.ROLE
: the IAM role that you grant to your user account.
-
Install the Google Cloud CLI.
-
Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.
-
Para inicializar gcloud CLI, ejecuta el siguiente comando:
gcloud init
-
Create or select a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Pub/Sub API:
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles.gcloud services enable pubsub.googleapis.com
-
Create local authentication credentials for your user account:
gcloud auth application-default login
If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.
-
Grant roles to your user account. Run the following command once for each of the following IAM roles:
roles/pubsub.admin
gcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE
Replace the following:
PROJECT_ID
: your project ID.USER_IDENTIFIER
: the identifier for your user account—for example,myemail@example.com
.ROLE
: the IAM role that you grant to your user account.
- Para evitar que se apliquen cargos en tu cuenta de Google Cloud por los recursos utilizados en esta guía, puedes usar la línea de comandos para eliminar el tema y la suscripción.
gcloud pubsub subscriptions delete my-sub gcloud pubsub topics delete my-topic
-
Optional: Revoke the authentication credentials that you created, and delete the local credential file.
gcloud auth application-default revoke
-
Optional: Revoke credentials from the gcloud CLI.
gcloud auth revoke
Consulta más información sobre los conceptos de Pub/Sub que se explican en esta página.
Consulta los conceptos básicos del servicio Pub/Sub.
Consulta cómo crear un sistema Pub/Sub de uno a muchos, que crea una aplicación de editor que publica en dos aplicaciones de suscriptor independientes.
Prueba otro inicio rápido de Pub/Sub que use gcloud CLI o la consola.
Consulta más información sobre las APIs de Pub/Sub.
Consulta cómo ejecutar Pub/Sub con Kotlin.
Instalar las bibliotecas de cliente
En los siguientes ejemplos se muestra cómo instalar las bibliotecas de cliente:
Python
Para obtener más información sobre la configuración de tu entorno de desarrollo de Python, consulta la guía de configuración del entorno de desarrollo de Python.
# ensure that you are using virtualenv
# as described in the python dev setup guide
pip install --upgrade google-cloud-pubsub
C++
Para obtener más información sobre cómo instalar la biblioteca de C++, consulta GitHub README
.
C#
Install-Package Google.Cloud.PubSub.V1 -Pre
Go
go get cloud.google.com/go/pubsub
Java
If you are using Maven, add
the following to your pom.xml
file. For more information about
BOMs, see The Google Cloud Platform Libraries BOM.
If you are using Gradle, add the following to your dependencies:
If you are using sbt, add the following to your dependencies:
If you're using Visual Studio Code, IntelliJ, or Eclipse, you can add client libraries to your project using the following IDE plugins:
The plugins provide additional functionality, such as key management for service accounts. Refer to each plugin's documentation for details.
Node.js
npm install @google-cloud/pubsub
PHP
composer require google/cloud-pubsub
Ruby
gem install google-cloud-pubsub
Crear un tema y una suscripción
Después de crear un tema, puedes suscribirte a él o publicar contenido en él.
Usa el siguiente comando gcloud pubsub topics create
para crear un tema llamado my-topic
. No cambies el nombre del tema, ya que se hace referencia a él en el resto del tutorial.
gcloud pubsub topics create my-topic
Usa el comando gcloud pubsub subscriptions
create
para crear una suscripción. Las aplicaciones suscriptoras solo pueden acceder a los mensajes publicados en el tema después de crear la suscripción.
gcloud pubsub subscriptions create my-sub --topic my-topic
Publica mensajes
Antes de ejecutar los siguientes ejemplos, asegúrate de quitar los comentarios y rellenar los valores obligatorios que estén marcados en el código. Es necesario para vincular el ejemplo a tu proyecto y a los recursos de Pub/Sub que hayas creado anteriormente.
Usa my-topic
como ID de tema.
Python
C++
C#
Go
Java
Node.js
Node.js
PHP
Ruby
Recibir mensajes
Configura un suscriptor para extraer los mensajes que acabas de publicar. Cada suscriptor debe confirmar cada mensaje en un periodo de tiempo configurable. Los mensajes no confirmados se vuelven a enviar. Ten en cuenta que, en ocasiones, Pub/Sub envía un mensaje más de una vez para asegurarse de que todos los mensajes lleguen a un suscriptor al menos una vez.
Antes de ejecutar los siguientes ejemplos, asegúrate de quitar los comentarios y rellenar los valores obligatorios que estén marcados en el código. Esto es necesario para vincular el ejemplo a tu proyecto y a los recursos de Pub/Sub que hayas creado anteriormente.
Usa my-sub
como ID de suscripción.
Para ver más ejemplos de cómo obtener mensajes, consulta Ejemplos de código de la biblioteca de cliente.
Python
C++
C#
Go
Java
Node.js
PHP
Ruby