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éterminez le nombre dont vous avez besoin pour gérer le débit de votre application.

Présentation des réservations Lite

Les réservations Lite provisionnent les ressources de débit et les partagent de manière dynamique entre elles ou plusieurs sujets Lite dans une région. Ces sujets peuvent être régionaux ou zonaux Lite des sujets. 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 de surveiller 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 joindre un sujet Lite qui se trouve dans vers la même réservation Lite. 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 en publication en Mbit/s Débit en abonnement en Mbit/s
Zonal 1 2
Régional 0,25 0,5

Consignes pour nommer une réservation

Un nom de ressource Pub/Sub Lite identifie de manière unique Ressource Pub/Sub Lite telle qu'un sujet, un abonnement ou réservation. 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: doit être 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 de pourcentage %

    Vous pouvez utiliser les caractères spéciaux de la liste précédente dans les noms de ressources sans codage en URL. Toutefois, vous devez vous assurer que tous les autres caractères spéciaux sont correctement codés ou décodés lorsque vous les utilisez dans des URL. Par exemple, mi-tópico est un ID non valide. Cependant, mi-t%C3%B3pico est 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 réservation ressource.

Tenez compte des points suivants lorsque vous envisagez de configurer une application Lite. réservation:

  • Le nombre d'unités de capacité nécessaires pour une réservation Lite doit être égal à le débit maximal attendu au cours d'une minute donnée pour tous les sujets et dans 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 reservation/throughput_capacity/utilization pour vous avertir lorsque la réservation risque d'être limité afin que vous puissiez augmenter la taille de la réservation.

  • Vous pouvez mettre à jour le débit des réservations aussi souvent que vous le souhaitez. Les modifications prennent effet en moins d'une minute. Toutefois, si vous réduisez une du débit d'une réservation, les frais les plus élevés pour une période de 24 heures. Pub/Sub Lite est un service de paiement à la capacité, où les scalings à la hausse sont instantanés et à la baisse possibles.

  • 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 un une grande capacité de débit, priver les autres sujets Lite et empêcher 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 des unités de capacité pour 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éterminer le débit maximal en publication ;

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

  2. Déterminer 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. Toutefois, n'oubliez pas que vos abonnés n'ont pas forcément besoin de recevoir des messages au taux maximal des éditeurs. Si des retards de traitement Pub/Sub Lite vous permet de mettre en mémoire tampon les messages de les traiter à un rythme 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. Les éléments suivants : est la formule permettant de calculer les unités de capacité requises pour un échantillon 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
    • Pic de débit 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 en publication du sujet: vous pouvez spécifier entre 4 et 16 Mbit/s de débit. La valeur doit être un nombre entier.

  • Capacité de débit en abonnement au sujet: vous pouvez spécifier entre 4 et 32 Mbit/s de débit. 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, Google Cloud CLI ou l'API Pub/Sub Lite.

Console

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

    Accéder aux 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 pour Go décrites dans l'article Bibliothèques clientes 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, Google Cloud CLI ou 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 des informations sur une réservation Lite à l'aide de la console Google Cloud, Google Cloud CLI ou 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.

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 pour Go décrites dans l'article Bibliothèques clientes 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, Google Cloud CLI ou l'API Pub/Sub Lite. Pour supprimer une réservation, 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 pour Go décrites dans l'article Bibliothèques clientes 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