Créer et gérer des réservations Lite

Ce document explique comment utiliser et gérer les réservations Pub/Sub Lite. Ce document explique également le concept d'unités de capacité et comment déterminer le nombre dont vous avez besoin pour répondre au débit de votre application.

Présentation des réservations Lite

Les réservations Lite provisionnent et partagent de manière dynamique la capacité de débit entre un ou plusieurs sujets Lite d'une région. Ces sujets peuvent être des sujets Lite régionaux ou zonaux. Il est préférable d'utiliser des réservations Lite plutôt que de définir le débit la capacité de chaque sujet Lite. Avec les réservations Lite, vous gérez et surveillez moins de ressources. De plus, vous n'avez pas à choisir la capacité de débit de sujets Lite.

Pour utiliser une réservation Lite, vous devez associer un sujet Lite situé dans la même région à la réservation Lite spécifique. Vous pouvez rattacher un seul vers des sujets Lite zonaux et régionaux. Toutes les partitions d'une Le sujet Lite associé à une réservation Lite est utilisé de manière dynamique. de la capacité de débit provisionnée dans la réservation Lite. Si vous une réservation Lite pour un sujet Lite, vous pouvez aussi inclure un tarif pour limiter la capacité de débit de chaque partition du sujet Lite.

Présentation des unités de capacité

La capacité de débit d'une réservation Lite est provisionnée en unités de capacité.

Une unité de capacité correspond au débit suivant:

Type de sujet Lite Débit de publication en Mio/s Débit en abonnement en Mio/s
Zonal 1 2
Régional 0,25 0,5

Consignes concernant l'attribution d'un nom à une réservation

Un nom attribué à une ressource Pub/Sub Lite, comme un sujet, un abonnement ou une réservation, permet d'identifier cette ressource de manière unique. Le nom de la ressource doit respecter le format suivant :

projects/project-identifier/collection/ID

  • project-identifier: doit correspondre à l'ID ou au numéro du projet, disponible dans la console Google Cloud. Par exemple, my-cool-project est un ID de projet. 123456789123 est un numéro de projet.

  • collection: saisissez topics, subscriptions ou reservations.

  • ID: doit respecter les consignes suivantes:

    • ne doivent pas commencer par la chaîne goog ;
    • Commencer par une lettre
    • contenir entre 3 et 255 caractères ;
    • ne contenir que les caractères suivants : lettres [A-Za-z], chiffres [0-9], tirets -, traits de soulignement _, points ., tildes ~, signes plus + et signes pourcentage % ;

    Vous pouvez utiliser les caractères spéciaux de la liste précédente dans les noms de ressources sans codage d'URL. Toutefois, vous devez vous assurer que tous les autres caractères spéciaux sont correctement encodés ou décodés lorsque vous les utilisez dans des URL. Par exemple, mi-tópico n'est pas un ID valide. En revanche, mi-t%C3%B3pico est une valeur valide. Ce format est important lorsque vous effectuez des appels REST.

Consignes d'utilisation d'une réservation Lite

Le provisionnement du débit avec les réservations Lite est obligatoire pour les réservations Lite régionales et est facultatif pour les sujets Lite zonaux. Une réservation Lite est une ressource régionale.

Tenez compte des points suivants lorsque vous prévoyez de configurer une réservation Lite :

  • Le nombre d'unités de capacité nécessaires pour une réservation Lite doit être égal au débit de pointe que vous attendez pour une minute donnée pour tous les sujets et abonnements de cette réservation Lite.

  • Lorsque le débit combiné de tous les sujets Lite dans une réservation Lite atteint sa capacité maximale, la publication et la livraison sont limitées. Les serveurs Pub/Sub Lite cessent d'envoyer des messages aux clients, et les messages sont mis en mémoire tampon dans le client éditeur. Vous pouvez configurer une alerte pour reservation/throughput_capacity/utilization afin de vous avertir lorsque la réservation risque d'être limitée afin que vous puissiez augmenter sa taille.

  • Vous pouvez mettre à jour le débit des réservations aussi souvent que vous le souhaitez. Les modifications prendront effet en moins d'une minute. Toutefois, si vous réduisez une du débit de réservation, les frais les plus élevés vous sont facturés pour une période de 24 heures. Pub/Sub Lite est intrinsèquement un système payant en fonction de la capacité, où l'augmentation de la capacité est instantanée et la réduction de la capacité est possible.

  • Tous les sujets Lite associés à une réservation Lite utilisent le même pool de la capacité de débit. Il est donc possible qu'un sujet Lite utilise soudainement une grande quantité de capacité de débit, privant d'autres sujets Lite et les empêchant de publier ou de recevoir des messages. Si vous avez besoin d'une isolation complète sur plusieurs sujets Lite, vous pouvez les joindre à des réservations indépendantes.

Impact des partitions sur une réservation Lite

Le nombre total de partitions sur tous les sujets Lite dans une réservation Lite doit ne doit pas dépasser le nombre d'unités de capacité réservées. Par exemple : ne peut pas associer une réservation Lite de 10 unités de capacité à un sujet Lite ou à un ensemble de Sujets Lite dont le nombre total de partitions est supérieur à 10.

Calculer les unités de capacité d'une réservation Lite

La taille d'une réservation Lite est définie par le nombre d'unités de capacité. La Les exemples suivants montrent comment estimer la capacité requise pour des sujets Lite spécifiques.

  1. Déterminez le débit maximal en publication.

    Estimer le pic de débit de tous les sujets Lite associés à la réservation Lite. Une estimation approximative du débit est suffisante, car vous pouvez toujours mettre à jour la taille de la réservation.

  2. Déterminez le débit maximal en abonnement.

    Le débit maximal en abonnement est calculé de la même manière que le débit maximal en publication débit. Cependant, gardez à l'esprit que vos abonnés n'ont pas forcément besoin de recevoir des messages au taux maximal des éditeurs. Si les retards de traitement sont acceptables, Pub/Sub Lite vous permet de mettre en mémoire tampon les messages et de les traiter à un débit régulier. En même temps, vous voudrez peut-être avoir plus d'abonnement que la capacité de publication pour prendre en charge les temps d'arrêt des abonnés.

  3. Déterminez le nombre total d'unités de capacité requises.

    Le tableau de la section précédente spécifie le nombre de Mbit/s. qu'une unité de capacité peut prendre en charge pour différentes opérations. Voici la formule permettant de calculer les unités de capacité requises pour un exemple de réservation Lite :

    • Débit maximal en publication des sujets Lite zonaux = Pz MiBps
    • Pic de débit en publication des sujets Lite régionaux = Pr MiBps
    • Pic de débit en abonnement des sujets Lite zonaux = Sz MiBps
    • Débit maximal en abonnement des sujets Lite régionaux = Sr MiBps

      Nombre d'unités de capacité requises = (Pz / 1 MiBps) + (Pr/0.25 MiBps) + (Sz/2 MiBps) + (Sr/0.5 MiBps)

      Si le nombre n'est pas entier, vous devez arrondir la valeur.

Configurer la capacité de débit sans réservation Lite

  • Capacité de débit de publication du sujet : vous pouvez spécifier une capacité de débit de 4 à 16 Mio/s. La valeur doit être un nombre entier.

  • Capacité de débit des abonnements au sujet : vous pouvez spécifier une capacité de débit de 4 à 32 Mbit/s. La valeur doit être un nombre entier.

Pour le débit en abonnement, nous vous recommandons de provisionner votre débit pour correspondre au produit de votre débit en publication attendu et au nombre d'abonnements sur votre sujet.

Les capacités d'éditeur et d'abonné provisionnées pour un sujet individuel ne sont pas interchangeables. C'est pourquoi nous vous recommandons de toujours utiliser les réservations.

Il existe des différences de facturation lors du provisionnement direct de la capacité pour des sujets au lieu d'utiliser des réservations. Consultez la page des tarifs de Pub/Sub Lite. pour en savoir plus.

Créer une réservation Lite

Une réservation Lite doit se trouver dans le même projet et la même région que tous les sujets Lite qui y sont associées. Pour obtenir la liste des zones et régions disponibles, consultez Emplacements Pub/Sub Lite.

Vous pouvez créer une réservation Lite avec la console Google Cloud, la Google Cloud CLI ou l'API Pub/Sub Lite.

Console

  1. Accédez à la page Réservations Lite.

    Accéder à "Réservations Lite"

  2. Cliquez sur Créer une réservation Lite.

  3. Sélectionnez une région.

  4. Saisissez un ID de réservation Lite.

  5. Provisionnez la quantité d'unités de capacité de débit.

  6. Cliquez sur Create (Créer).

gcloud

Pour créer un sujet Lite, utilisez la commande gcloud pubsub lite-reservations create :

gcloud pubsub lite-reservations create myRes \
  --location=us-central1 \
  --throughput-capacity=INTEGER_NUMBER_OF_UNITS
gcloud pubsub lite-topics create myTopic \
  --throughput-reservation=myRez \
  --zone=ZONE \
  --location=us-central1a \
  --partitions \
  --storage

Go

Avant d'exécuter cet exemple, suivez les instructions de configuration de Go dans la section Bibliothèques clientes de Pub/Sub Lite.

import (
	"context"
	"fmt"
	"io"

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

func createReservation(w io.Writer, projectID, region, reservationID string, throughputCapacity int) error {
	// projectID := "my-project-id"
	// region := "us-central1"
	// reservationID := "my-reservation"
	// throughputCapacity := 4
	ctx := context.Background()
	client, err := pubsublite.NewAdminClient(ctx, region)
	if err != nil {
		return fmt.Errorf("pubsublite.NewAdminClient: %w", err)
	}
	defer client.Close()

	reservationPath := fmt.Sprintf("projects/%s/locations/%s/reservations/%s", projectID, region, reservationID)
	res, err := client.CreateReservation(ctx, pubsublite.ReservationConfig{
		Name:               reservationPath,
		ThroughputCapacity: throughputCapacity,
	})
	if err != nil {
		return fmt.Errorf("client.CreateReservation got err: %w", err)
	}
	fmt.Fprintf(w, "Created reservation: %s\n", res.Name)
	return nil
}

Java

Avant d'exécuter cet exemple, suivez les instructions de configuration de Java dans la section Bibliothèques clientes de Pub/Sub Lite.

import com.google.api.gax.rpc.AlreadyExistsException;
import com.google.cloud.pubsublite.AdminClient;
import com.google.cloud.pubsublite.AdminClientSettings;
import com.google.cloud.pubsublite.CloudRegion;
import com.google.cloud.pubsublite.ProjectNumber;
import com.google.cloud.pubsublite.ReservationName;
import com.google.cloud.pubsublite.ReservationPath;
import com.google.cloud.pubsublite.proto.Reservation;
import java.util.concurrent.ExecutionException;

public class CreateReservationExample {
  public static void main(String... args) throws Exception {
    // TODO(developer): Replace these variables before running the sample.
    long projectNumber = Long.parseLong("123456789");
    String cloudRegion = "your-cloud-region";
    String reservationId = "your-reservation-id";
    // Each unit of throughput capacity supports up to 1 MiB/s of published messages or
    // 2 MiB/s of subscribed messages.
    int throughputCapacity = 4;

    createReservationExample(projectNumber, cloudRegion, reservationId, throughputCapacity);
  }

  public static void createReservationExample(
      long projectNumber, String cloudRegion, String reservationId, int throughputCapacity)
      throws Exception {

    ReservationPath reservationPath =
        ReservationPath.newBuilder()
            .setProject(ProjectNumber.of(projectNumber))
            .setLocation(CloudRegion.of(cloudRegion))
            .setName(ReservationName.of(reservationId))
            .build();

    Reservation reservation =
        Reservation.newBuilder()
            .setName(reservationPath.toString())
            .setThroughputCapacity(throughputCapacity)
            .build();

    AdminClientSettings adminClientSettings =
        AdminClientSettings.newBuilder().setRegion(CloudRegion.of(cloudRegion)).build();

    try (AdminClient adminClient = AdminClient.create(adminClientSettings)) {
      Reservation response = adminClient.createReservation(reservation).get();
      System.out.println(response.getAllFields() + " created successfully.");
    } catch (ExecutionException e) {
      try {
        throw e.getCause();
      } catch (AlreadyExistsException alreadyExists) {
        System.out.println("This reservation already exists.");
      } catch (Throwable throwable) {
        throwable.printStackTrace();
      }
    }
  }
}

Python

Avant d'exécuter cet exemple, suivez les instructions de configuration de Python dans la section Bibliothèques clientes de Pub/Sub Lite.

from google.api_core.exceptions import AlreadyExists
from google.cloud.pubsublite import AdminClient, Reservation
from google.cloud.pubsublite.types import CloudRegion, ReservationPath

# TODO(developer):
# project_number = 1122334455
# cloud_region = "us-central1"
# reservation_id = "your-reservation-id"
# Each unit of throughput capacity supports up to 1 MiB/s of published messages
# or 2 MiB/s of subscribed messages. Must be a positive integer.
# throughput_capacity = 4

cloud_region = CloudRegion(cloud_region)
reservation_path = ReservationPath(project_number, cloud_region, reservation_id)

reservation = Reservation(
    name=str(reservation_path),
    throughput_capacity=throughput_capacity,
)

client = AdminClient(cloud_region)
try:
    response = client.create_reservation(reservation)
    print(f"{response.name} created successfully.")
except AlreadyExists:
    print(f"{reservation_path} already exists.")

Mettre à jour une réservation Lite

Vous pouvez mettre à jour le nombre d'unités de capacité configurées pour une réservation Lite.

Vous pouvez mettre à jour une réservation Lite à l'aide de la console Google Cloud, de la Google Cloud CLI ou de l'API Pub/Sub Lite.

Console

  1. Accédez à la page Réservations Lite.

    Accéder aux réservations Lite

  2. Cliquez sur l'ID de réservation Lite.

  3. Sur la page des détails de la réservation Lite, cliquez sur Modifier.

gcloud

Pour mettre à jour une réservation Lite, utilisez la commande gcloud pubsub lite-reservations update :

gcloud pubsub lite-reservations update RESERVATION_ID \
  --location=REGION \
  --throughput-capacity=THROUGHPUT_CAPACITY

Remplacez les éléments suivants :

  • RESERVATION_ID : ID de la réservation Lite
  • REGION : région de la réservation
  • THROUGHPUT_CAPACITY: capacité de débit des réservations.

Go

Avant d'exécuter cet exemple, suivez les instructions de configuration pour Go décrites dans l'article Bibliothèques clientes Pub/Sub Lite.

import (
	"context"
	"fmt"
	"io"

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

func updateReservation(w io.Writer, projectID, region, reservationID string, throughputCapacity int) error {
	// projectID := "my-project-id"
	// region := "us-central1"
	// reservationID := "my-reservation-id"
	// throughputCapacity := 8
	ctx := context.Background()
	client, err := pubsublite.NewAdminClient(ctx, region)
	if err != nil {
		return fmt.Errorf("pubsublite.NewAdminClient: %w", err)
	}
	defer client.Close()

	reservationPath := fmt.Sprintf("projects/%s/locations/%s/reservations/%s", projectID, region, reservationID)
	config := pubsublite.ReservationConfigToUpdate{
		Name:               reservationPath,
		ThroughputCapacity: throughputCapacity,
	}
	updatedCfg, err := client.UpdateReservation(ctx, config)
	if err != nil {
		return fmt.Errorf("client.UpdateReservation got err: %w", err)
	}
	fmt.Fprintf(w, "Updated reservation: %#v\n", updatedCfg)
	return nil
}

Java

Avant d'exécuter cet exemple, suivez les instructions de configuration de Java dans la section Bibliothèques clientes de Pub/Sub Lite.

import com.google.api.gax.rpc.NotFoundException;
import com.google.cloud.pubsublite.AdminClient;
import com.google.cloud.pubsublite.AdminClientSettings;
import com.google.cloud.pubsublite.CloudRegion;
import com.google.cloud.pubsublite.ProjectNumber;
import com.google.cloud.pubsublite.ReservationName;
import com.google.cloud.pubsublite.ReservationPath;
import com.google.cloud.pubsublite.proto.Reservation;
import java.util.concurrent.ExecutionException;

public class UpdateReservationExample {
  public static void main(String... args) throws Exception {
    // TODO(developer): Replace these variables before running the sample.
    long projectNumber = Long.parseLong("123456789");
    String cloudRegion = "your-cloud-region";
    String reservationId = "your-reservation-id";
    // Each unit of throughput capacity supports up to 1 MiB/s of published messages or
    // 2 MiB/s of subscribed messages.
    int throughputCapacity = 8;

    updateReservationExample(projectNumber, cloudRegion, reservationId, throughputCapacity);
  }

  public static void updateReservationExample(
      long projectNumber, String cloudRegion, String reservationId, int throughputCapacity)
      throws Exception {

    ReservationPath reservationPath =
        ReservationPath.newBuilder()
            .setProject(ProjectNumber.of(projectNumber))
            .setLocation(CloudRegion.of(cloudRegion))
            .setName(ReservationName.of(reservationId))
            .build();

    com.google.protobuf.FieldMask fieldMask =
        com.google.protobuf.FieldMask.newBuilder().addPaths("throughput_capacity").build();

    Reservation reservation =
        Reservation.newBuilder()
            .setName(reservationPath.toString())
            .setThroughputCapacity(throughputCapacity)
            .build();

    AdminClientSettings adminClientSettings =
        AdminClientSettings.newBuilder().setRegion(CloudRegion.of(cloudRegion)).build();

    try (AdminClient adminClient = AdminClient.create(adminClientSettings)) {
      Reservation reservationBeforeUpdate = adminClient.getReservation(reservationPath).get();
      System.out.println("Before update: " + reservationBeforeUpdate.getAllFields());

      Reservation reservationAfterUpdate =
          adminClient.updateReservation(reservation, fieldMask).get();
      System.out.println("After update: " + reservationAfterUpdate.getAllFields());
    } catch (ExecutionException e) {
      try {
        throw e.getCause();
      } catch (NotFoundException notFound) {
        System.out.println("This reservation is not found.");
      } catch (Throwable throwable) {
        throwable.printStackTrace();
      }
    }
  }
}

Python

Avant d'exécuter cet exemple, suivez les instructions de configuration de Python dans la section Bibliothèques clientes de Pub/Sub Lite.

from google.api_core.exceptions import NotFound
from google.cloud.pubsublite import AdminClient, Reservation
from google.cloud.pubsublite.types import CloudRegion, ReservationPath
from google.protobuf.field_mask_pb2 import FieldMask

# TODO(developer):
# project_number = 1122334455
# cloud_region = "us-central1"
# reservation_id = "your-reservation-id"
# Each unit of throughput capacity supports up to 1 MiB/s of published messages
# or 2 MiB/s of subscribed messages. Must be a positive integer.
# throughput_capacity = 8

cloud_region = CloudRegion(cloud_region)
reservation_path = ReservationPath(project_number, cloud_region, reservation_id)

# Defines which fields to update in the reservation.
field_mask = FieldMask(paths=["throughput_capacity"])

reservation = Reservation(
    name=str(reservation_path), throughput_capacity=throughput_capacity
)

client = AdminClient(cloud_region)
try:
    response = client.get_reservation(reservation_path)
    print(f"Before update: {response}")

    response = client.update_reservation(reservation, field_mask)
    print(f"After update: {response}")
except NotFound:
    print(f"{reservation_path} is not found.")

Obtenir les détails d'une réservation Lite

Vous pouvez obtenir les détails d'une réservation Lite à l'aide de la console Google Cloud, de la Google Cloud CLI ou de l'API Pub/Sub Lite.

Console

  1. Accédez à la page Réservations Lite.

    Accéder à "Réservations Lite"

  2. Cliquez sur l'ID de réservation Lite.

gcloud

Pour obtenir les détails d'une réservation Lite, utilisez la commande gcloud pubsub lite-reservations describe :

gcloud pubsub lite-reservations describe RESERVATION_ID \
  --location=REGION

Remplacez les éléments suivants :

  • RESERVATION_ID : ID de la réservation Lite
  • REGION : région de la réservation

Go

Avant d'exécuter cet exemple, suivez les instructions de configuration pour Go décrites dans l'article Bibliothèques clientes Pub/Sub Lite.

import (
	"context"
	"fmt"
	"io"

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

func getReservation(w io.Writer, projectID, region, reservationID string) error {
	// projectID := "my-project-id"
	// region := "us-central1"
	// reservationID := "my-reservation"
	ctx := context.Background()
	client, err := pubsublite.NewAdminClient(ctx, region)
	if err != nil {
		return fmt.Errorf("pubsublite.NewAdminClient: %w", err)
	}
	defer client.Close()

	reservationPath := fmt.Sprintf("projects/%s/locations/%s/reservations/%s", projectID, region, reservationID)
	res, err := client.Reservation(ctx, reservationPath)
	if err != nil {
		return fmt.Errorf("client.Reservation got err: %w", err)
	}
	fmt.Fprintf(w, "Got reservation: %#v\n", res)
	return nil
}

Java

Avant d'exécuter cet exemple, suivez les instructions de configuration de Java dans la section Bibliothèques clientes de Pub/Sub Lite.

import com.google.api.gax.rpc.NotFoundException;
import com.google.cloud.pubsublite.AdminClient;
import com.google.cloud.pubsublite.AdminClientSettings;
import com.google.cloud.pubsublite.CloudRegion;
import com.google.cloud.pubsublite.ProjectNumber;
import com.google.cloud.pubsublite.ReservationName;
import com.google.cloud.pubsublite.ReservationPath;
import com.google.cloud.pubsublite.proto.Reservation;
import java.util.concurrent.ExecutionException;

public class GetReservationExample {
  public static void main(String... args) throws Exception {
    // TODO(developer): Replace these variables before running the sample.
    long projectNumber = Long.parseLong("123456789");
    String cloudRegion = "your-cloud-region";
    String reservationId = "your-reservation-id";

    getReservationExample(projectNumber, cloudRegion, reservationId);
  }

  public static void getReservationExample(
      long projectNumber, String cloudRegion, String reservationId) throws Exception {
    ReservationPath reservationPath =
        ReservationPath.newBuilder()
            .setProject(ProjectNumber.of(projectNumber))
            .setLocation(CloudRegion.of(cloudRegion))
            .setName(ReservationName.of(reservationId))
            .build();

    AdminClientSettings adminClientSettings =
        AdminClientSettings.newBuilder().setRegion(CloudRegion.of(cloudRegion)).build();

    try (AdminClient adminClient = AdminClient.create(adminClientSettings)) {
      Reservation response = adminClient.getReservation(reservationPath).get();
      long throughputCapacity = response.getThroughputCapacity();
      System.out.println(
          response.getAllFields()
              + "\nhas "
              + throughputCapacity
              + " units of throughput capacity.");
    } catch (ExecutionException e) {
      try {
        throw e.getCause();
      } catch (NotFoundException notFound) {
        System.out.println("This reservation is not found.");
      } catch (Throwable throwable) {
        throwable.printStackTrace();
      }
    }
  }
}

Python

Avant d'exécuter cet exemple, suivez les instructions de configuration de Python dans la section Bibliothèques clientes de Pub/Sub Lite.

from google.api_core.exceptions import NotFound
from google.cloud.pubsublite import AdminClient
from google.cloud.pubsublite.types import CloudRegion, ReservationPath

# TODO(developer):
# project_number = 1122334455
# cloud_region = "us-central1"
# reservation_id = "your-reservation-id"

cloud_region = CloudRegion(cloud_region)
reservation_path = ReservationPath(project_number, cloud_region, reservation_id)

client = AdminClient(cloud_region)
try:
    response = client.get_reservation(reservation_path)
    print(
        f"{response.name} has {response.throughput_capacity} units of throughput capacity."
    )
except NotFound:
    print(f"{reservation_path} is not found.")

Répertorier les réservations Lite

Console

gcloud

Pour afficher la liste des réservations Lite dans un projet, utilisez la commande gcloud pubsub lite-reservations list :

gcloud pubsub lite-reservations list \
  --location=REGION

Remplacez les éléments suivants :

  • REGION : région de la réservation

Go

Avant d'exécuter cet exemple, suivez les instructions de configuration de Go dans la section Bibliothèques clientes de Pub/Sub Lite.

import (
	"context"
	"fmt"
	"io"

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

func listReservations(w io.Writer, projectID, region string) error {
	// projectID := "my-project-id"
	// region := "us-central1"
	ctx := context.Background()
	client, err := pubsublite.NewAdminClient(ctx, region)
	if err != nil {
		return fmt.Errorf("pubsublite.NewAdminClient: %w", err)
	}
	defer client.Close()

	parent := fmt.Sprintf("projects/%s/locations/%s", projectID, region)
	resIter := client.Reservations(ctx, parent)
	for {
		res, err := resIter.Next()
		if err == iterator.Done {
			break
		}
		if err != nil {
			return fmt.Errorf("resIter.Next() got err: %w", err)
		}
		fmt.Fprintf(w, "Got reservation config: %v", res)
	}
	return nil
}

Java

Avant d'exécuter cet exemple, suivez les instructions de configuration de Java dans la section Bibliothèques clientes de Pub/Sub Lite.

import com.google.cloud.pubsublite.AdminClient;
import com.google.cloud.pubsublite.AdminClientSettings;
import com.google.cloud.pubsublite.CloudRegion;
import com.google.cloud.pubsublite.LocationPath;
import com.google.cloud.pubsublite.ProjectNumber;
import com.google.cloud.pubsublite.proto.Reservation;
import java.util.List;

public class ListReservationsExample {

  public static void main(String... args) throws Exception {
    // TODO(developer): Replace these variables before running the sample.
    long projectNumber = Long.parseLong("123456789");
    String cloudRegion = "your-cloud-region";

    listReservationsExample(projectNumber, cloudRegion);
  }

  public static void listReservationsExample(long projectNumber, String cloudRegion)
      throws Exception {

    AdminClientSettings adminClientSettings =
        AdminClientSettings.newBuilder().setRegion(CloudRegion.of(cloudRegion)).build();

    LocationPath locationPath =
        LocationPath.newBuilder()
            .setProject(ProjectNumber.of(projectNumber))
            .setLocation(CloudRegion.of(cloudRegion))
            .build();

    try (AdminClient adminClient = AdminClient.create(adminClientSettings)) {
      List<Reservation> reservations = adminClient.listReservations(locationPath).get();
      for (Reservation reservation : reservations) {
        System.out.println(reservation.getAllFields());
      }
      System.out.println(reservations.size() + " reservation(s) listed in " + locationPath + ".");
    }
  }
}

Python

Avant d'exécuter cet exemple, suivez les instructions de configuration de Python dans la section Bibliothèques clientes de Pub/Sub Lite.

from google.cloud.pubsublite import AdminClient
from google.cloud.pubsublite.types import LocationPath

# TODO(developer):
# project_number = 1122334455
# cloud_region = "us-central1"

location_path = LocationPath(project_number, cloud_region)

client = AdminClient(cloud_region)
response = client.list_reservations(location_path)

for reservation in response:
    print(reservation)

print(f"{len(response)} reservation(s) listed in your project and location.")

Supprimer une réservation Lite

Vous pouvez supprimer des réservations Lite à l'aide de la console Google Cloud, de la CLI Google Cloud ou de l'API Pub/Sub Lite. Pour pouvoir supprimer une réservation, celle-ci ne doit contenir aucun sujet. Vous pouvez associer des sujets existants à une autre réservation, puis supprimer la réservation.

Console

  1. Accédez à la page Réservations Lite.

    Accéder aux réservations Lite

  2. Cliquez sur l'ID de réservation Lite.

  3. Sur la page des détails de la réservation Lite, cliquez sur Supprimer.

  4. Dans la boîte de dialogue qui s'affiche, cliquez sur Supprimer pour confirmer la suppression de la réservation Lite.

gcloud

Pour supprimer une réservation Lite, utilisez la commande gcloud pubsub lite-reservations delete :

gcloud pubsub lite-reservations delete RESERVATION_ID \
  --location=REGION

Remplacez les éléments suivants :

  • RESERVATION_ID : ID de la réservation Lite
  • REGION : région de la réservation

Go

Avant d'exécuter cet exemple, suivez les instructions de configuration de Go dans la section Bibliothèques clientes de Pub/Sub Lite.

import (
	"context"
	"fmt"
	"io"

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

func deleteReservation(w io.Writer, projectID, region, reservationID string) error {
	// projectID := "my-project-id"
	// region := "us-central1"
	// reservationID := "my-reservation"
	ctx := context.Background()
	client, err := pubsublite.NewAdminClient(ctx, region)
	if err != nil {
		return fmt.Errorf("pubsublite.NewAdminClient: %w", err)
	}
	defer client.Close()

	reservationPath := fmt.Sprintf("projects/%s/locations/%s/reservations/%s", projectID, region, reservationID)
	err = client.DeleteReservation(ctx, reservationPath)
	if err != nil {
		return fmt.Errorf("client.DeleteReservation got err: %w", err)
	}
	fmt.Fprint(w, "Deleted reservation")
	return nil
}

Java

Avant d'exécuter cet exemple, suivez les instructions de configuration de Java dans la section Bibliothèques clientes de Pub/Sub Lite.

import com.google.api.gax.rpc.NotFoundException;
import com.google.cloud.pubsublite.AdminClient;
import com.google.cloud.pubsublite.AdminClientSettings;
import com.google.cloud.pubsublite.CloudRegion;
import com.google.cloud.pubsublite.ProjectNumber;
import com.google.cloud.pubsublite.ReservationName;
import com.google.cloud.pubsublite.ReservationPath;
import java.util.concurrent.ExecutionException;

public class DeleteReservationExample {
  public static void main(String... args) throws Exception {
    // TODO(developer): Replace these variables before running the sample.
    long projectNumber = Long.parseLong("123456789");
    String cloudRegion = "your-cloud-region";
    String reservationId = "your-reservation-id";

    deleteReservationExample(projectNumber, cloudRegion, reservationId);
  }

  public static void deleteReservationExample(
      long projectNumber, String cloudRegion, String reservationId) throws Exception {

    ReservationPath reservationPath =
        ReservationPath.newBuilder()
            .setProject(ProjectNumber.of(projectNumber))
            .setLocation(CloudRegion.of(cloudRegion))
            .setName(ReservationName.of(reservationId))
            .build();

    AdminClientSettings adminClientSettings =
        AdminClientSettings.newBuilder().setRegion(CloudRegion.of(cloudRegion)).build();

    // If a reservation has topics attached, you must delete the topics before deleting
    // the reservation.
    try (AdminClient adminClient = AdminClient.create(adminClientSettings)) {
      adminClient.deleteReservation(reservationPath).get();
      System.out.println(reservationPath + " deleted successfully.");
    } catch (ExecutionException e) {
      try {
        throw e.getCause();
      } catch (NotFoundException notFound) {
        System.out.println("This reservation is not found.");
      } catch (Throwable throwable) {
        throwable.printStackTrace();
      }
    }
  }
}

Python

Avant d'exécuter cet exemple, suivez les instructions de configuration de Python dans la section Bibliothèques clientes de Pub/Sub Lite.

from google.api_core.exceptions import NotFound
from google.cloud.pubsublite import AdminClient
from google.cloud.pubsublite.types import CloudRegion, ReservationPath

# TODO(developer):
# project_number = 1122334455
# cloud_region = "us-central1"
# reservation_id = "your-reservation-id"

cloud_region = CloudRegion(cloud_region)
reservation_path = ReservationPath(project_number, cloud_region, reservation_id)

client = AdminClient(cloud_region)
try:
    client.delete_reservation(reservation_path)
    print(f"{reservation_path} deleted successfully.")
except NotFound:
    print(f"{reservation_path} not found.")

Étape suivante