Administra temas y suscripciones

En este documento, se proporciona información sobre cómo crear, borrar y administrar suscripciones y temas de Pub/Sub. Para obtener más información sobre la publicación y el acceso a los datos del mensaje, consulta la guía del editor y la descripción general del suscriptor.

Administra temas

Puedes crear, borrar y visualizar temas con la API, Google Cloud Console o la herramienta de línea de comandos de gcloud. Consulta la referencia de gcloud pubsub para obtener una lista completa de los comandos de gcloud de la API de Pub/Sub.

Crea un tema

Antes de poder publicar un tema o suscribirte a él, debes crearlo. En este ejemplo, se muestra cómo crear un tema:

Protocolo

Solicitud:

La solicitud debe autenticarse con un token de acceso en el encabezado Authorization. A fin de obtener un token de acceso para las credenciales predeterminadas actuales de la aplicación, usa el siguiente comando: gcloud auth application-default print-access-token.

PUT https://pubsub.googleapis.com/v1/projects/myproject/topics/mytopic
Authorization: Bearer ACCESS_TOKEN
    

Respuesta:

200 OK
{
 "name": "projects/myproject/topics/mytopic"
}

Línea de comandos

  gcloud pubsub topics create myTopic

C#

Antes de probar esta muestra, sigue las instrucciones de configuración de C# en la guía de inicio rápido de Cloud Pub/Sub sobre el uso de bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Cloud Pub/Sub para C#.

            PublisherServiceApiClient publisher = PublisherServiceApiClient.Create();

            TopicName topicName = new TopicName(projectId, topicId);
            try
            {
                publisher.CreateTopic(topicName);
            }
            catch (RpcException e)
            when (e.Status.StatusCode == StatusCode.AlreadyExists)
            {
                // Already exists.  That's fine.
            }

Go

Antes de probar esta muestra, sigue las instrucciones de configuración de Go en la guía de inicio rápido de Cloud Pub/Sub sobre el uso de bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Cloud Pub/Sub para Go.

import (
	"context"
	"fmt"
	"io"

	"cloud.google.com/go/pubsub"
)

func create(w io.Writer, projectID, topicID string) error {
	// projectID := "my-project-id"
	// topicID := "my-topic"
	ctx := context.Background()
	client, err := pubsub.NewClient(ctx, projectID)
	if err != nil {
		return fmt.Errorf("pubsub.NewClient: %v", err)
	}

	t, err := client.CreateTopic(ctx, topicID)
	if err != nil {
		return fmt.Errorf("CreateTopic: %v", err)
	}
	fmt.Fprintf(w, "Topic created: %v\n", t)
	return nil
}

Java

Antes de probar esta muestra, sigue las instrucciones de configuración de Java en la guía de inicio rápido de Cloud Pub/Sub sobre el uso de bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Cloud Pub/Sub para Java.

try (TopicAdminClient topicAdminClient = TopicAdminClient.create()) {
  // projectId <=  unique project identifier, eg. "my-project-id"
  // topicId <= "my-topic-id"
  ProjectTopicName topicName = ProjectTopicName.of(projectId, topicId);
  Topic topic = topicAdminClient.createTopic(topicName);
  return topic;
}

Node.js

Antes de probar esta muestra, sigue las instrucciones de configuración de Node.js en la guía de inicio rápido de Cloud Pub/Sub sobre el uso de bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Cloud Pub/Sub para Node.js.

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

// Creates a client
const pubsub = new PubSub();

/**
 * TODO(developer): Uncomment the following line to run the sample.
 */
// const topicName = 'my-topic';

// Creates a new topic
await pubsub.createTopic(topicName);
console.log(`Topic ${topicName} created.`);

PHP

Antes de probar esta muestra, sigue las instrucciones de configuración de PHP en la guía de inicio rápido de Cloud Pub/Sub sobre el uso de bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Cloud Pub/Sub para PHP.

use Google\Cloud\PubSub\PubSubClient;

/**
 * Creates a Pub/Sub topic.
 *
 * @param string $projectId  The Google project ID.
 * @param string $topicName  The Pub/Sub topic name.
 */
function create_topic($projectId, $topicName)
{
    $pubsub = new PubSubClient([
        'projectId' => $projectId,
    ]);
    $topic = $pubsub->createTopic($topicName);

    printf('Topic created: %s' . PHP_EOL, $topic->name());
}

Python

Antes de probar esta muestra, sigue las instrucciones de configuración de Python en la guía de inicio rápido de Cloud Pub/Sub sobre el uso de bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Cloud Pub/Sub para Python.

from google.cloud import pubsub_v1

# TODO project_id = "Your Google Cloud Project ID"
# TODO topic_name = "Your Pub/Sub topic name"

publisher = pubsub_v1.PublisherClient()
topic_path = publisher.topic_path(project_id, topic_name)

topic = publisher.create_topic(topic_path)

print("Topic created: {}".format(topic))

Ruby

Antes de probar esta muestra, sigue las instrucciones de configuración de Ruby en la guía de inicio rápido de Cloud Pub/Sub sobre el uso de bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Cloud Pub/Sub para Ruby.

# project_id = "Your Google Cloud Project ID"
# topic_name = "Your Pubsub topic name"
require "google/cloud/pubsub"

pubsub = Google::Cloud::Pubsub.new project: project_id

topic = pubsub.create_topic topic_name

puts "Topic #{topic.name} created."

Borra un tema

En este ejemplo, se muestra cómo borrar un tema:

Protocolo

Solicitud:

La solicitud debe autenticarse con un token de acceso en el encabezado Authorization. A fin de obtener un token de acceso para las credenciales predeterminadas actuales de la aplicación, usa el siguiente comando: gcloud auth application-default print-access-token.

DELETE https://pubsub.googleapis.com/v1/projects/myproject/topics/mytopic
Authorization: Bearer ACCESS_TOKEN
    

Respuesta:

200 OK
{
 "name": "projects/myproject/topics/mytopic"
}

Comando de gcloud

  gcloud pubsub topics delete myTopic

C#

Antes de probar esta muestra, sigue las instrucciones de configuración de C# en la guía de inicio rápido de Cloud Pub/Sub sobre el uso de bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Cloud Pub/Sub para C#.

PublisherServiceApiClient publisher = PublisherServiceApiClient.Create();
TopicName topicName = new TopicName(projectId, topicId);
publisher.DeleteTopic(topicName);
Console.WriteLine("Topic deleted.");

Go

Antes de probar esta muestra, sigue las instrucciones de configuración de Go en la guía de inicio rápido de Cloud Pub/Sub sobre el uso de bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Cloud Pub/Sub para Go.

import (
	"context"
	"fmt"
	"io"

	"cloud.google.com/go/pubsub"
)

func delete(w io.Writer, projectID, topicID string) error {
	// projectID := "my-project-id"
	// topicID := "my-topic"
	ctx := context.Background()
	client, err := pubsub.NewClient(ctx, projectID)
	if err != nil {
		return fmt.Errorf("pubsub.NewClient: %v", err)
	}

	t := client.Topic(topicID)
	if err := t.Delete(ctx); err != nil {
		return fmt.Errorf("Delete: %v", err)
	}
	fmt.Fprintf(w, "Deleted topic: %v\n", t)
	return nil
}

Java

Antes de probar esta muestra, sigue las instrucciones de configuración de Java en la guía de inicio rápido de Cloud Pub/Sub sobre el uso de bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Cloud Pub/Sub para Java.

try (TopicAdminClient topicAdminClient = TopicAdminClient.create()) {
  ProjectTopicName topicName = ProjectTopicName.of(projectId, topicId);
  topicAdminClient.deleteTopic(topicName);
  return topicName;
}

Node.js

Antes de probar esta muestra, sigue las instrucciones de configuración de Node.js en la guía de inicio rápido de Cloud Pub/Sub sobre el uso de bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Cloud Pub/Sub para Node.js.

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

// Creates a client
const pubsub = new PubSub();

/**
 * TODO(developer): Uncomment the following line to run the sample.
 */
// const topicName = 'my-topic';

// Deletes the topic
await pubsub.topic(topicName).delete();
console.log(`Topic ${topicName} deleted.`);

PHP

Antes de probar esta muestra, sigue las instrucciones de configuración de PHP en la guía de inicio rápido de Cloud Pub/Sub sobre el uso de bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Cloud Pub/Sub para PHP.

use Google\Cloud\PubSub\PubSubClient;

/**
 * Creates a Pub/Sub topic.
 *
 * @param string $projectId  The Google project ID.
 * @param string $topicName  The Pub/Sub topic name.
 */
function delete_topic($projectId, $topicName)
{
    $pubsub = new PubSubClient([
        'projectId' => $projectId,
    ]);
    $topic = $pubsub->topic($topicName);
    $topic->delete();

    printf('Topic deleted: %s' . PHP_EOL, $topic->name());
}

Python

Antes de probar esta muestra, sigue las instrucciones de configuración de Python en la guía de inicio rápido de Cloud Pub/Sub sobre el uso de bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Cloud Pub/Sub para Python.

from google.cloud import pubsub_v1

# TODO project_id = "Your Google Cloud Project ID"
# TODO topic_name = "Your Pub/Sub topic name"

publisher = pubsub_v1.PublisherClient()
topic_path = publisher.topic_path(project_id, topic_name)

publisher.delete_topic(topic_path)

print("Topic deleted: {}".format(topic_path))

Ruby

Antes de probar esta muestra, sigue las instrucciones de configuración de Ruby en la guía de inicio rápido de Cloud Pub/Sub sobre el uso de bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Cloud Pub/Sub para Ruby.

# project_id = "Your Google Cloud Project ID"
# topic_name = "Your Pubsub topic name"
require "google/cloud/pubsub"

pubsub = Google::Cloud::Pubsub.new project: project_id

topic = pubsub.topic topic_name
topic.delete

puts "Topic #{topic_name} deleted."

Cuando borras un tema, no se borran sus suscripciones; las tareas pendientes de mensajes de la suscripción están disponible para los suscriptores. Después de borrar un tema, sus suscripciones tienen el nombre del tema _deleted-topic_. Si intentas crear un tema con el mismo nombre que acabas de borrar, es probable que aparezca un error durante un breve período después de la eliminación.

Lista de temas

En este ejemplo, se muestra cómo obtener una lista de temas:

Protocolo

Solicitud:

La solicitud debe autenticarse con un token de acceso en el encabezado Authorization. A fin de obtener un token de acceso para las credenciales predeterminadas actuales de la aplicación, usa el siguiente comando: gcloud auth application-default print-access-token.

GET https://pubsub.googleapis.com/v1/projects/myproject/topics
Authorization: Bearer ACCESS_TOKEN
    

Respuesta:

200 OK
{
  "topics": [
    {
      "name": "projects/myproject/topics/mytopic1"
    },
    {
      "name": "projects/myproject/topics/mytopic2"
    }
  ]
}

Comando de gcloud

   gcloud pubsub topics list

C#

Antes de probar esta muestra, sigue las instrucciones de configuración de C# en la guía de inicio rápido de Cloud Pub/Sub sobre el uso de bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Cloud Pub/Sub para C#.

ProjectName projectName = new ProjectName(projectId);
IEnumerable<Topic> topics = publisher.ListTopics(projectName);
foreach (Topic topic in topics)
{
    Console.WriteLine($"{topic.Name}");
}

Go

Antes de probar esta muestra, sigue las instrucciones de configuración de Go en la guía de inicio rápido de Cloud Pub/Sub sobre el uso de bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Cloud Pub/Sub para Go.

import (
	"context"
	"fmt"

	"cloud.google.com/go/pubsub"
	"google.golang.org/api/iterator"
)

func list(projectID string) ([]*pubsub.Topic, error) {
	// projectID := "my-project-id"
	ctx := context.Background()
	client, err := pubsub.NewClient(ctx, projectID)
	if err != nil {
		return nil, fmt.Errorf("pubsub.NewClient: %v", err)
	}

	var topics []*pubsub.Topic

	it := client.Topics(ctx)
	for {
		topic, err := it.Next()
		if err == iterator.Done {
			break
		}
		if err != nil {
			return nil, fmt.Errorf("Next: %v", err)
		}
		topics = append(topics, topic)
	}

	return topics, nil
}

Java

Antes de probar esta muestra, sigue las instrucciones de configuración de Java en la guía de inicio rápido de Cloud Pub/Sub sobre el uso de bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Cloud Pub/Sub para Java.

try (TopicAdminClient topicAdminClient = TopicAdminClient.create()) {
  ListTopicsRequest listTopicsRequest =
      ListTopicsRequest.newBuilder().setProject(ProjectName.format(projectId)).build();
  ListTopicsPagedResponse response = topicAdminClient.listTopics(listTopicsRequest);
  Iterable<Topic> topics = response.iterateAll();
  for (Topic topic : topics) {
    // do something with the topic
  }
  return response;
}

Node.js

Antes de probar esta muestra, sigue las instrucciones de configuración de Node.js en la guía de inicio rápido de Cloud Pub/Sub sobre el uso de bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Cloud Pub/Sub para Node.js.

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

// Creates a client
const pubsub = new PubSub();

// Lists all topics in the current project
const [topics] = await pubsub.getTopics();
console.log('Topics:');
topics.forEach(topic => console.log(topic.name));

PHP

Antes de probar esta muestra, sigue las instrucciones de configuración de PHP en la guía de inicio rápido de Cloud Pub/Sub sobre el uso de bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Cloud Pub/Sub para PHP.

use Google\Cloud\PubSub\PubSubClient;

/**
 * Lists all Pub/Sub topics.
 *
 * @param string $projectId  The Google project ID.
 */
function list_topics($projectId)
{
    $pubsub = new PubSubClient([
        'projectId' => $projectId,
    ]);
    foreach ($pubsub->topics() as $topic) {
        printf('Topic: %s' . PHP_EOL, $topic->name());
    }
}

Python

Antes de probar esta muestra, sigue las instrucciones de configuración de Python en la guía de inicio rápido de Cloud Pub/Sub sobre el uso de bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Cloud Pub/Sub para Python.

from google.cloud import pubsub_v1

# TODO project_id = "Your Google Cloud Project ID"

publisher = pubsub_v1.PublisherClient()
project_path = publisher.project_path(project_id)

for topic in publisher.list_topics(project_path):
    print(topic)

Ruby

Antes de probar esta muestra, sigue las instrucciones de configuración de Ruby en la guía de inicio rápido de Cloud Pub/Sub sobre el uso de bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Cloud Pub/Sub para Ruby.

# project_id = "Your Google Cloud Project ID"
require "google/cloud/pubsub"

pubsub = Google::Cloud::Pubsub.new project: project_id

topics = pubsub.topics

puts "Topics in project:"
topics.each do |topic|
  puts topic.name
end
De forma predeterminada, se muestra un máximo de 100 resultados por consulta. Puedes especificar un valor alternativo de hasta 1,000 con el parámetro de tamaño de página.

Administra suscripciones

En esta sección, se explica cómo administrar las suscripciones de envío y de extracción. Consulta la descripción general del suscriptor para obtener una descripción general y una comparación de las suscripciones de envío y de extracción.

Debes crear una suscripción a un tema antes de que los suscriptores puedan recibir mensajes publicados en el tema.

Consulta también la referencia de gcloud para los comandos de suscriptores.

Las suscripciones tienen varias propiedades que se pueden configurar en el momento de la creación o actualizarse más tarde, entre las cuales se incluyen las siguientes:

  • Método de entrega: de forma predeterminada, las suscripciones de Pub/Sub usan el método de extracción. Para cambiar a entrega de envío, especifica una URL de extremo de envío de HTTPS no vacía. Si quieres volver a usar la entrega de extracción, especifica una URL vacía.

  • Plazo de confirmación: si el código no confirma la recepción del mensaje antes del plazo límite, el mensaje se vuelve a enviar. El tiempo predeterminado es 10 segundos. El plazo límite máximo personalizado que puedes especificar es 600 segundos (10 minutos).

Crea suscripciones

Puedes usar los siguientes métodos para crear suscripciones:

Protocolo

Solicitud:

La solicitud debe autenticarse con un token de acceso en el encabezado Authorization. A fin de obtener un token de acceso para las credenciales predeterminadas actuales de la aplicación, usa el siguiente comando: gcloud auth application-default print-access-token.

PUT https://pubsub.googleapis.com/v1/projects/myproject/subscriptions/mysubscription
Authorization: Bearer ACCESS_TOKEN
    

Especifica los siguientes campos en el cuerpo de la solicitud:

{
  "topic": "projects/someproject/topics/sometopic"
  // Only needed if you are using push delivery
  "pushConfig": {
    "pushEndpoint": "https://myproject.appspot.com/myhandler"
  }
}

Respuesta:

200 OK
{
  "name": "projects/myproject/subscriptions/mysubscription",
  "topic": "projects/someproject/topics/sometopic",
  "pushConfig": {
    "pushEndpoint": "https://myproject.appspot.com/myhandler"
  },
  "ackDeadlineSeconds": 10
}

Comando de gcloud

   gcloud pubsub subscriptions create mySubscription --topic myTopic

C#

Antes de probar esta muestra, sigue las instrucciones de configuración de C# en la guía de inicio rápido de Cloud Pub/Sub sobre el uso de bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Cloud Pub/Sub para C#.

SubscriberServiceApiClient subscriber = SubscriberServiceApiClient.Create();
TopicName topicName = new TopicName(projectId, topicId);
SubscriptionName subscriptionName = new SubscriptionName(projectId,
    subscriptionId);
try
{
    Subscription subscription = subscriber.CreateSubscription(
        subscriptionName, topicName, pushConfig: null,
        ackDeadlineSeconds: 60);
}
catch (RpcException e)
when (e.Status.StatusCode == StatusCode.AlreadyExists)
{
    // Already exists.  That's fine.
}

Go

Antes de probar esta muestra, sigue las instrucciones de configuración de Go en la guía de inicio rápido de Cloud Pub/Sub sobre el uso de bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Cloud Pub/Sub para Go.

import (
	"context"
	"fmt"
	"io"
	"time"

	"cloud.google.com/go/pubsub"
)

func create(w io.Writer, projectID, subID string, topic *pubsub.Topic) error {
	// projectID := "my-project-id"
	// subID := "my-sub"
	// topic of type https://godoc.org/cloud.google.com/go/pubsub#Topic
	ctx := context.Background()
	client, err := pubsub.NewClient(ctx, projectID)
	if err != nil {
		return fmt.Errorf("pubsub.NewClient: %v", err)
	}

	sub, err := client.CreateSubscription(ctx, subID, pubsub.SubscriptionConfig{
		Topic:       topic,
		AckDeadline: 20 * time.Second,
	})
	if err != nil {
		return fmt.Errorf("CreateSubscription: %v", err)
	}
	fmt.Fprintf(w, "Created subscription: %v\n", sub)
	return nil
}

Java

Antes de probar esta muestra, sigue las instrucciones de configuración de Java en la guía de inicio rápido de Cloud Pub/Sub sobre el uso de bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Cloud Pub/Sub para Java.

try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {
  // eg. projectId = "my-test-project", topicId = "my-test-topic"
  ProjectTopicName topicName = ProjectTopicName.of(projectId, topicId);
  // eg. subscriptionId = "my-test-subscription"
  ProjectSubscriptionName subscriptionName =
      ProjectSubscriptionName.of(projectId, subscriptionId);
  // create a pull subscription with default acknowledgement deadline
  Subscription subscription =
      subscriptionAdminClient.createSubscription(
          subscriptionName, topicName, PushConfig.getDefaultInstance(), 0);
  return subscription;
}

Node.js

Antes de probar esta muestra, sigue las instrucciones de configuración de Node.js en la guía de inicio rápido de Cloud Pub/Sub sobre el uso de bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Cloud Pub/Sub para Node.js.

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

// Creates a client
const pubsub = new PubSub();

/**
 * TODO(developer): Uncomment the following lines to run the sample.
 */
// const topicName = 'my-topic';
// const subscriptionName = 'my-sub';

// Creates a new subscription
await pubsub.topic(topicName).createSubscription(subscriptionName);
console.log(`Subscription ${subscriptionName} created.`);

PHP

Antes de probar esta muestra, sigue las instrucciones de configuración de PHP en la guía de inicio rápido de Cloud Pub/Sub sobre el uso de bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Cloud Pub/Sub para PHP.

use Google\Cloud\PubSub\PubSubClient;

/**
 * Creates a Pub/Sub subscription.
 *
 * @param string $projectId  The Google project ID.
 * @param string $topicName  The Pub/Sub topic name.
 * @param string $subscriptionName  The Pub/Sub subscription name.
 */
function create_subscription($projectId, $topicName, $subscriptionName)
{
    $pubsub = new PubSubClient([
        'projectId' => $projectId,
    ]);
    $topic = $pubsub->topic($topicName);
    $subscription = $topic->subscription($subscriptionName);
    $subscription->create();

    printf('Subscription created: %s' . PHP_EOL, $subscription->name());
}

Python

Antes de probar esta muestra, sigue las instrucciones de configuración de Python en la guía de inicio rápido de Cloud Pub/Sub sobre el uso de bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Cloud Pub/Sub para Python.

from google.cloud import pubsub_v1

# TODO project_id = "Your Google Cloud Project ID"
# TODO topic_name = "Your Pub/Sub topic name"
# TODO subscription_name = "Your Pub/Sub subscription name"

subscriber = pubsub_v1.SubscriberClient()
topic_path = subscriber.topic_path(project_id, topic_name)
subscription_path = subscriber.subscription_path(
    project_id, subscription_name
)

subscription = subscriber.create_subscription(
    subscription_path, topic_path
)

print("Subscription created: {}".format(subscription))

Ruby

Antes de probar esta muestra, sigue las instrucciones de configuración de Ruby en la guía de inicio rápido de Cloud Pub/Sub sobre el uso de bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Cloud Pub/Sub para Ruby.

# project_id        = "Your Google Cloud Project ID"
# topic_name        = "Your Pubsub topic name"
# subscription_name = "Your Pubsub subscription name"
require "google/cloud/pubsub"

pubsub = Google::Cloud::Pubsub.new project: project_id

topic        = pubsub.topic topic_name
subscription = topic.subscribe subscription_name

puts "Pull subscription #{subscription_name} created."

Para crear suscripciones de envío, proporciona una URL de extremo de HTTP, como se muestra en estos ejemplos:

Comando de gcloud

   gcloud pubsub subscriptions create mySubscription --topic myTopic --push-endpoint="https://myapp.appspot.com/push"

Go

Antes de probar esta muestra, sigue las instrucciones de configuración de Go en la guía de inicio rápido de Cloud Pub/Sub sobre el uso de bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Cloud Pub/Sub para Go.

import (
	"context"
	"fmt"
	"io"
	"time"

	"cloud.google.com/go/pubsub"
)

func createWithEndpoint(w io.Writer, projectID, subID string, topic *pubsub.Topic, endpoint string) error {
	// projectID := "my-project-id"
	// subID := "my-sub"
	// topic of type https://godoc.org/cloud.google.com/go/pubsub#Topic
	// endpoint := "https://my-test-project.appspot.com/push"
	ctx := context.Background()
	client, err := pubsub.NewClient(ctx, projectID)
	if err != nil {
		return fmt.Errorf("pubsub.NewClient: %v", err)
	}

	sub, err := client.CreateSubscription(ctx, subID, pubsub.SubscriptionConfig{
		Topic:       topic,
		AckDeadline: 10 * time.Second,
		PushConfig:  pubsub.PushConfig{Endpoint: endpoint},
	})
	if err != nil {
		return fmt.Errorf("CreateSubscription: %v", err)
	}
	fmt.Fprintf(w, "Created subscription: %v\n", sub)
	return nil
}

Java

Antes de probar esta muestra, sigue las instrucciones de configuración de Java en la guía de inicio rápido de Cloud Pub/Sub sobre el uso de bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Cloud Pub/Sub para Java.

try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {
  ProjectTopicName topicName = ProjectTopicName.of(projectId, topicId);
  ProjectSubscriptionName subscriptionName =
      ProjectSubscriptionName.of(projectId, subscriptionId);

  // eg. endpoint = "https://my-test-project.appspot.com/push"
  PushConfig pushConfig = PushConfig.newBuilder().setPushEndpoint(endpoint).build();

  // acknowledgement deadline in seconds for the message received over the push endpoint
  int ackDeadlineInSeconds = 10;

  Subscription subscription =
      subscriptionAdminClient.createSubscription(
          subscriptionName, topicName, pushConfig, ackDeadlineInSeconds);
  return subscription;
}

Node.js

Antes de probar esta muestra, sigue las instrucciones de configuración de Node.js en la guía de inicio rápido de Cloud Pub/Sub sobre el uso de bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Cloud Pub/Sub para Node.js.

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

// Creates a client
const pubsub = new PubSub();

/**
 * TODO(developer): Uncomment the following lines to run the sample.
 */
// const topicName = 'my-topic';
// const subscriptionName = 'my-sub';

const options = {
  pushConfig: {
    // Set to an HTTPS endpoint of your choice. If necessary, register
    // (authorize) the domain on which the server is hosted.
    pushEndpoint: `https://${pubsub.projectId}.appspot.com/push`,
  },
};

await pubsub.topic(topicName).createSubscription(subscriptionName, options);
console.log(`Subscription ${subscriptionName} created.`);

PHP

Antes de probar esta muestra, sigue las instrucciones de configuración de PHP en la guía de inicio rápido de Cloud Pub/Sub sobre el uso de bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Cloud Pub/Sub para PHP.

use Google\Cloud\PubSub\PubSubClient;

/**
 * Creates a Pub/Sub push subscription.
 *
 * @param string $projectId  The Google project ID.
 * @param string $topicName  The Pub/Sub topic name.
 * @param string $subscriptionName  The Pub/Sub subscription name.
 * @param string $endpoint  The endpoint for the push subscription.
 */
function create_push_subscription($projectId, $topicName, $subscriptionName, $endpoint)
{
    $pubsub = new PubSubClient([
        'projectId' => $projectId,
    ]);
    $topic = $pubsub->topic($topicName);
    $subscription = $topic->subscription($subscriptionName);
    $subscription->create([
        'pushConfig' => ['pushEndpoint' => $endpoint]
    ]);

    printf('Subscription created: %s' . PHP_EOL, $subscription->name());
}

Python

Antes de probar esta muestra, sigue las instrucciones de configuración de Python en la guía de inicio rápido de Cloud Pub/Sub sobre el uso de bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Cloud Pub/Sub para Python.

from google.cloud import pubsub_v1

# TODO project_id = "Your Google Cloud Project ID"
# TODO topic_name = "Your Pub/Sub topic name"
# TODO subscription_name = "Your Pub/Sub subscription name"
# TODO endpoint = "https://my-test-project.appspot.com/push"

subscriber = pubsub_v1.SubscriberClient()
topic_path = subscriber.topic_path(project_id, topic_name)
subscription_path = subscriber.subscription_path(
    project_id, subscription_name
)

push_config = pubsub_v1.types.PushConfig(push_endpoint=endpoint)

subscription = subscriber.create_subscription(
    subscription_path, topic_path, push_config
)

print("Push subscription created: {}".format(subscription))
print("Endpoint for subscription is: {}".format(endpoint))

Ruby

Antes de probar esta muestra, sigue las instrucciones de configuración de Ruby en la guía de inicio rápido de Cloud Pub/Sub sobre el uso de bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Cloud Pub/Sub para Ruby.

# project_id        = "Your Google Cloud Project ID"
# topic_name        = "Your Pubsub topic name"
# subscription_name = "Your Pubsub subscription name"
# endpoint          = "Endpoint where your app receives messages"
require "google/cloud/pubsub"

pubsub = Google::Cloud::Pubsub.new project: project_id

topic        = pubsub.topic topic_name
subscription = topic.subscribe subscription_name,
                               endpoint: endpoint

puts "Push subscription #{subscription_name} created."

Alterna entre las suscripciones de envío y de extracción

Puedes usar Cloud Console con Pub/Sub para cambiar el tipo de suscripción. En Console, edita la suscripción y cambia el Tipo de entrega a Extracción o Envío.

Otra opción es usar el comando de la herramienta de línea de comandos de gcloud. En particular, usa modify-push-config para modificar la URL del extremo de envío.

  • Para convertir una suscripción de envío en una de extracción, cambia la URL a una string vacía.
  • Para convertir una suscripción de extracción en una de envío, configura una URL válida.

Ejemplos: modificación del mecanismo de entrega o extremo de una suscripción

Una vez que se crea una suscripción, puedes actualizar el extremo de envío de una suscripción o alternar entre la opción de envío y extracción. En estos ejemplos, se muestra cómo actualizar una suscripción de extracción o envío existente mediante la especificación de una URL de extremo de envío de HTTPS válida no vacía:

Comando de gcloud

   gcloud pubsub subscriptions modify-push-config mySubscription --push-endpoint="https://anotherapp.appspot.com/push"

Go

Antes de probar esta muestra, sigue las instrucciones de configuración de Go en la guía de inicio rápido de Cloud Pub/Sub sobre el uso de bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Cloud Pub/Sub para Go.

import (
	"context"
	"fmt"
	"io"

	"cloud.google.com/go/pubsub"
)

func updateEndpoint(w io.Writer, projectID, subID string, endpoint string) error {
	// projectID := "my-project-id"
	// subID := "my-sub"
	// endpoint := "https://my-test-project.appspot.com/push"
	ctx := context.Background()
	client, err := pubsub.NewClient(ctx, projectID)
	if err != nil {
		return fmt.Errorf("pubsub.NewClient: %v", err)
	}

	subConfig, err := client.Subscription(subID).Update(ctx, pubsub.SubscriptionConfigToUpdate{
		PushConfig: &pubsub.PushConfig{Endpoint: endpoint},
	})
	if err != nil {
		return fmt.Errorf("Update: %v", err)
	}
	fmt.Fprintf(w, "Updated subscription config: %v\n", subConfig)
	return nil
}

Java

Antes de probar esta muestra, sigue las instrucciones de configuración de Java en la guía de inicio rápido de Cloud Pub/Sub sobre el uso de bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Cloud Pub/Sub para Java.

try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {
  ProjectSubscriptionName subscriptionName =
      ProjectSubscriptionName.of(projectId, subscriptionId);
  PushConfig pushConfig = PushConfig.newBuilder().setPushEndpoint(endpoint).build();
  subscriptionAdminClient.modifyPushConfig(subscriptionName, pushConfig);
}

Node.js

Antes de probar esta muestra, sigue las instrucciones de configuración de Node.js en la guía de inicio rápido de Cloud Pub/Sub sobre el uso de bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Cloud Pub/Sub para Node.js.

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

// Creates a client
const pubsub = new PubSub();

/**
 * TODO(developer): Uncomment the following line to run the sample.
 */
// const topicName = 'my-topic';
// const subscriptionName = 'my-sub';

const options = {
  // Set to an HTTPS endpoint of your choice. If necessary, register
  // (authorize) the domain on which the server is hosted.
  pushEndpoint: `https://${pubsub.projectId}.appspot.com/push`,
};

await pubsub
  .topic(topicName)
  .subscription(subscriptionName)
  .modifyPushConfig(options);
console.log(`Modified push config for subscription ${subscriptionName}.`);

Python

Antes de probar esta muestra, sigue las instrucciones de configuración de Python en la guía de inicio rápido de Cloud Pub/Sub sobre el uso de bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Cloud Pub/Sub para Python.

from google.cloud import pubsub_v1

# TODO project_id = "Your Google Cloud Project ID"
# TODO topic_name = "Your Pub/Sub topic name"
# TODO subscription_name = "Your Pub/Sub subscription name"
# TODO endpoint = "https://my-test-project.appspot.com/push"

subscriber = pubsub_v1.SubscriberClient()
subscription_path = subscriber.subscription_path(
    project_id, subscription_name
)

push_config = pubsub_v1.types.PushConfig(push_endpoint=endpoint)

subscription = pubsub_v1.types.Subscription(
    name=subscription_path, push_config=push_config
)

update_mask = {"paths": {"push_config"}}

subscriber.update_subscription(subscription, update_mask)
result = subscriber.get_subscription(subscription_path)

print("Subscription updated: {}".format(subscription_path))
print("New endpoint for subscription is: {}".format(result.push_config))

Ruby

Antes de probar esta muestra, sigue las instrucciones de configuración de Ruby en la guía de inicio rápido de Cloud Pub/Sub sobre el uso de bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Cloud Pub/Sub para Ruby.

# project_id        = "Your Google Cloud Project ID"
# subscription_name = "Your Pubsub subscription name"
# new_endpoint      = "Endpoint where your app receives messages""
require "google/cloud/pubsub"

pubsub = Google::Cloud::Pubsub.new project: project_id

subscription          = pubsub.subscription subscription_name
subscription.endpoint = new_endpoint

puts "Push endpoint updated."

Modifica las políticas de vencimiento de las suscripciones

De forma predeterminada, las suscripciones vencen a los 31 días de inactividad. Si Pub/Sub detecta actividad del suscriptor (como conexiones abiertas, extracciones activas o envíos exitosos), se reinicia el conteo para la eliminación de la suscripción.

Si quieres cambiar este comportamiento, modifica la política de vencimiento de la suscripción. Puedes establecer la duración de la política cuando creas la suscripción o puedes hacerlo más adelante. El valor mínimo permitido para una política de vencimiento es de 1 día. No hay un valor máximo. Usa cualquiera de las siguientes opciones para configurar la política:

  • Las marcas de duración y vencimiento disponibles en los comandos de suscripción de gcloud. Por ejemplo:

    alias pubsub='gcloud pubsub'
    # subscription that expires after one day of inactivity
    pubsub subscriptions create mySubscription --expiration-period=1d --topic myTopic
    # make the subscription non-expiring
    pubsub subscriptions update mySubscription --expiration-period=never
    
  • La asistencia para las políticas de vencimiento está disponible en las bibliotecas cliente de Pub/Sub.

  • Métodos RPC:

  • Método REST:

Conserva los mensajes confirmados y no confirmados

De forma predeterminada, Pub/Sub garantiza que las suscripciones conserven los mensajes no confirmados durante 7 días a partir del momento de la publicación. Puedes establecer la propiedad messageRetentionDuration de una suscripción para especificar durante cuanto tiempo después de la publicación se deben conservar los mensajes, hasta un máximo de 7 días. Después del plazo especificado en esta propiedad, Pub/Sub puede descartar el mensaje, sin importar el estado de confirmación que tenga. También puedes configurar la suscripción para que conserve los mensajes confirmados durante este tiempo. Consulta la página sobre cómo volver a reproducir y descartar mensajes.

Lista de suscripciones

Puedes generar una lista de todas las suscripciones de un proyecto o solo de las suscripciones a un tema en particular. Consulta la página sobre el control de acceso para obtener detalles de cómo limitar el acceso, si es necesario. En estos ejemplos, se muestra cómo generar una lista de todas las suscripciones de un proyecto.

Comando de gcloud

   gcloud pubsub subscriptions list

C#

Antes de probar esta muestra, sigue las instrucciones de configuración de C# en la guía de inicio rápido de Cloud Pub/Sub sobre el uso de bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Cloud Pub/Sub para C#.

SubscriberServiceApiClient subscriber = SubscriberServiceApiClient.Create();
ProjectName projectName = new ProjectName(projectId);
IEnumerable<Subscription> subscriptions =
    subscriber.ListSubscriptions(projectName);
foreach (Subscription subscription in subscriptions)
{
    Console.WriteLine($"{subscription}");
}

Go

Antes de probar esta muestra, sigue las instrucciones de configuración de Go en la guía de inicio rápido de Cloud Pub/Sub sobre el uso de bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Cloud Pub/Sub para Go.

import (
	"context"
	"fmt"

	"cloud.google.com/go/pubsub"
	"google.golang.org/api/iterator"
)

func list(projectID string) ([]*pubsub.Subscription, error) {
	// projectID := "my-project-id"
	ctx := context.Background()
	client, err := pubsub.NewClient(ctx, projectID)
	if err != nil {
		return nil, fmt.Errorf("pubsub.NewClient: %v", err)
	}

	var subs []*pubsub.Subscription
	it := client.Subscriptions(ctx)
	for {
		s, err := it.Next()
		if err == iterator.Done {
			break
		}
		if err != nil {
			return nil, fmt.Errorf("Next: %v", err)
		}
		subs = append(subs, s)
	}
	return subs, nil
}

Java

Antes de probar esta muestra, sigue las instrucciones de configuración de Java en la guía de inicio rápido de Cloud Pub/Sub sobre el uso de bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Cloud Pub/Sub para Java.

try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {
  ListSubscriptionsRequest listSubscriptionsRequest =
      ListSubscriptionsRequest.newBuilder()
          .setProject(ProjectName.of(projectId).toString())
          .build();
  ListSubscriptionsPagedResponse response =
      subscriptionAdminClient.listSubscriptions(listSubscriptionsRequest);
  Iterable<Subscription> subscriptions = response.iterateAll();
  for (Subscription subscription : subscriptions) {
    // do something with the subscription
  }
  return response;
}

Node.js

Antes de probar esta muestra, sigue las instrucciones de configuración de Node.js en la guía de inicio rápido de Cloud Pub/Sub sobre el uso de bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Cloud Pub/Sub para Node.js.

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

// Creates a client
const pubsub = new PubSub();

// Lists all subscriptions in the current project
const [subscriptions] = await pubsub.getSubscriptions();
console.log('Subscriptions:');
subscriptions.forEach(subscription => console.log(subscription.name));

PHP

Antes de probar esta muestra, sigue las instrucciones de configuración de PHP en la guía de inicio rápido de Cloud Pub/Sub sobre el uso de bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Cloud Pub/Sub para PHP.

use Google\Cloud\PubSub\PubSubClient;

/**
 * Lists all Pub/Sub subscriptions.
 *
 * @param string $projectId  The Google project ID.
 */
function list_subscriptions($projectId)
{
    $pubsub = new PubSubClient([
        'projectId' => $projectId,
    ]);
    foreach ($pubsub->subscriptions() as $subscription) {
        printf('Subscription: %s' . PHP_EOL, $subscription->name());
    }
}

Python

Antes de probar esta muestra, sigue las instrucciones de configuración de Python en la guía de inicio rápido de Cloud Pub/Sub sobre el uso de bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Cloud Pub/Sub para Python.

from google.cloud import pubsub_v1

# TODO project_id = "Your Google Cloud Project ID"

subscriber = pubsub_v1.SubscriberClient()
project_path = subscriber.project_path(project_id)

for subscription in subscriber.list_subscriptions(project_path):
    print(subscription.name)

Ruby

Antes de probar esta muestra, sigue las instrucciones de configuración de Ruby en la guía de inicio rápido de Cloud Pub/Sub sobre el uso de bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Cloud Pub/Sub para Ruby.

# project_id = Your Google Cloud Project ID
require "google/cloud/pubsub"

pubsub = Google::Cloud::Pubsub.new project: project_id

subscriptions = pubsub.list_subscriptions

puts "Subscriptions:"
subscriptions.each do |subscription|
  puts subscription.name
end

Accede a las suscripciones

En estos ejemplos, se muestra cómo acceder a las suscripciones de un tema específico.

Comando de gcloud

   gcloud pubsub topics list-subscriptions myTopic

Go

Antes de probar esta muestra, sigue las instrucciones de configuración de Go en la guía de inicio rápido de Cloud Pub/Sub sobre el uso de bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Cloud Pub/Sub para Go.

import (
	"context"
	"fmt"

	"cloud.google.com/go/pubsub"
	"google.golang.org/api/iterator"
)

func listSubscriptions(projectID, topicID string) ([]*pubsub.Subscription, error) {
	// projectID := "my-project-id"
	// topicName := "projects/sample-248520/topics/ocr-go-test-topic"
	ctx := context.Background()
	client, err := pubsub.NewClient(ctx, projectID)
	if err != nil {
		return nil, fmt.Errorf("pubsub.NewClient: %v", err)
	}

	var subs []*pubsub.Subscription

	it := client.Topic(topicID).Subscriptions(ctx)
	for {
		sub, err := it.Next()
		if err == iterator.Done {
			break
		}
		if err != nil {
			return nil, fmt.Errorf("Next: %v", err)
		}
		subs = append(subs, sub)
	}
	return subs, nil
}

Java

Antes de probar esta muestra, sigue las instrucciones de configuración de Java en la guía de inicio rápido de Cloud Pub/Sub sobre el uso de bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Cloud Pub/Sub para Java.

try (TopicAdminClient topicAdminClient = TopicAdminClient.create()) {
  ProjectTopicName topicName = ProjectTopicName.of(projectId, topicId);
  ListTopicSubscriptionsRequest request =
      ListTopicSubscriptionsRequest.newBuilder().setTopic(topicName.toString()).build();
  ListTopicSubscriptionsPagedResponse response =
      topicAdminClient.listTopicSubscriptions(request);
  Iterable<String> subscriptionNames = response.iterateAll();
  for (String subscriptionName : subscriptionNames) {
    // do something with the subscription name
  }
  return response;
}

Node.js

Antes de probar esta muestra, sigue las instrucciones de configuración de Node.js en la guía de inicio rápido de Cloud Pub/Sub sobre el uso de bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Cloud Pub/Sub para Node.js.

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

// Creates a client
const pubsub = new PubSub();

/**
 * TODO(developer): Uncomment the following line to run the sample.
 */
// const topicName = 'my-topic';

// Lists all subscriptions for the topic
const [subscriptions] = await pubsub.topic(topicName).getSubscriptions();
console.log(`Subscriptions for ${topicName}:`);
subscriptions.forEach(subscription => console.log(subscription.name));

Python

Antes de probar esta muestra, sigue las instrucciones de configuración de Python en la guía de inicio rápido de Cloud Pub/Sub sobre el uso de bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Cloud Pub/Sub para Python.

from google.cloud import pubsub_v1

# TODO project_id = "Your Google Cloud Project ID"
# TODO topic_name = "Your Pub/Sub topic name"

publisher = pubsub_v1.PublisherClient()
topic_path = publisher.topic_path(project_id, topic_name)

for subscription in publisher.list_topic_subscriptions(topic_path):
    print(subscription)

Ruby

Antes de probar esta muestra, sigue las instrucciones de configuración de Ruby en la guía de inicio rápido de Cloud Pub/Sub sobre el uso de bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Cloud Pub/Sub para Ruby.

# project_id = "Your Google Cloud Project ID"
# topic_name = "Your Pubsub topic name"
require "google/cloud/pubsub"

pubsub = Google::Cloud::Pubsub.new project: project_id

topic         = pubsub.topic topic_name
subscriptions = topic.subscriptions

puts "Subscriptions in topic #{topic.name}:"
subscriptions.each do |subscription|
  puts subscription.name
end

Borra suscripciones

En estos ejemplos, se muestra cómo borrar suscripciones de un proyecto una vez que ya no las necesitas.

Comando de gcloud

   gcloud pubsub subscriptions delete mySubscription

C#

Antes de probar esta muestra, sigue las instrucciones de configuración de C# en la guía de inicio rápido de Cloud Pub/Sub sobre el uso de bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Cloud Pub/Sub para C#.

SubscriberServiceApiClient subscriber = SubscriberServiceApiClient.Create();
SubscriptionName subscriptionName = new SubscriptionName(projectId,
    subscriptionId);
subscriber.DeleteSubscription(subscriptionName);
Console.WriteLine("Subscription deleted.");

Go

Antes de probar esta muestra, sigue las instrucciones de configuración de Go en la guía de inicio rápido de Cloud Pub/Sub sobre el uso de bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Cloud Pub/Sub para Go.

import (
	"context"
	"fmt"
	"io"

	"cloud.google.com/go/pubsub"
)

func delete(w io.Writer, projectID, subID string) error {
	// projectID := "my-project-id"
	// subID := "my-sub"
	ctx := context.Background()
	client, err := pubsub.NewClient(ctx, projectID)
	if err != nil {
		return fmt.Errorf("pubsub.NewClient: %v", err)
	}

	sub := client.Subscription(subID)
	if err := sub.Delete(ctx); err != nil {
		return fmt.Errorf("Delete: %v", err)
	}
	fmt.Fprintf(w, "Subscription %q deleted.", subID)
	return nil
}

Java

Antes de probar esta muestra, sigue las instrucciones de configuración de Java en la guía de inicio rápido de Cloud Pub/Sub sobre el uso de bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Cloud Pub/Sub para Java.

try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {
  ProjectSubscriptionName subscriptionName =
      ProjectSubscriptionName.of(projectId, subscriptionId);
  subscriptionAdminClient.deleteSubscription(subscriptionName);
  return subscriptionName;
}

Node.js

Antes de probar esta muestra, sigue las instrucciones de configuración de Node.js en la guía de inicio rápido de Cloud Pub/Sub sobre el uso de bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Cloud Pub/Sub para Node.js.

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

// Creates a client
const pubsub = new PubSub();

/**
 * TODO(developer): Uncomment the following line to run the sample.
 */
// const subscriptionName = 'my-sub';

// Deletes the subscription
await pubsub.subscription(subscriptionName).delete();
console.log(`Subscription ${subscriptionName} deleted.`);

PHP

Antes de probar esta muestra, sigue las instrucciones de configuración de PHP en la guía de inicio rápido de Cloud Pub/Sub sobre el uso de bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Cloud Pub/Sub para PHP.

use Google\Cloud\PubSub\PubSubClient;

/**
 * Creates a Pub/Sub subscription.
 *
 * @param string $projectId  The Google project ID.
 * @param string $subscriptionName  The Pub/Sub subscription name.
 */
function delete_subscription($projectId, $subscriptionName)
{
    $pubsub = new PubSubClient([
        'projectId' => $projectId,
    ]);
    $subscription = $pubsub->subscription($subscriptionName);
    $subscription->delete();

    printf('Subscription deleted: %s' . PHP_EOL, $subscription->name());
}

Python

Antes de probar esta muestra, sigue las instrucciones de configuración de Python en la guía de inicio rápido de Cloud Pub/Sub sobre el uso de bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Cloud Pub/Sub para Python.

from google.cloud import pubsub_v1

# TODO project_id = "Your Google Cloud Project ID"
# TODO subscription_name = "Your Pub/Sub subscription name"

subscriber = pubsub_v1.SubscriberClient()
subscription_path = subscriber.subscription_path(
    project_id, subscription_name
)

subscriber.delete_subscription(subscription_path)

print("Subscription deleted: {}".format(subscription_path))

Ruby

Antes de probar esta muestra, sigue las instrucciones de configuración de Ruby en la guía de inicio rápido de Cloud Pub/Sub sobre el uso de bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Cloud Pub/Sub para Ruby.

# project_id        = "Your Google Cloud Project ID"
# subscription_name = "Your Pubsub subscription name"
require "google/cloud/pubsub"

pubsub = Google::Cloud::Pubsub.new project: project_id

subscription = pubsub.subscription subscription_name
subscription.delete

puts "Subscription #{subscription_name} deleted."

Nombres de recursos

Con un nombre de recurso de Pub/Sub, se identifica de forma exclusiva un recurso de Pub/Sub, como una suscripción o un tema. Debe tener el siguiente formato:

projects/project-identifier/collection/relative-name

El project-identifier debe ser el ID del proyecto, disponible en Google Cloud Console. Por ejemplo, projects/myproject/topics/mytopic.

La collection debe ser subscriptions o topics.

El relative-name debe cumplir con lo siguiente:

  • no comenzar con la string goog
  • comenzar con una letra
  • tener entre 3 y 255 caracteres
  • tener solo los siguientes caracteres:

    • Letras: [A-Za-z]
    • Números: [0-9]
    • Guiones: -
    • Guiones bajos: _
    • Puntos: .
    • Tildes: ~
    • Signos más: +
    • Signos de porcentaje: %

      Los caracteres especiales de la lista anterior se pueden usar en nombres de recursos sin codificación de URL. Sin embargo, debes asegurarte de que los demás caracteres especiales estén codificados/decodificados de forma correcta cuando se usen en las URL. Por ejemplo, mi-tópico es un relative-name no válido. Pero mi-t%C3%B3pico es válido.

      Esto es importante, en especial, para las llamadas de REST.