Creare e gestire prenotazioni Lite

Questo documento spiega come utilizzare e gestire le prenotazioni Pub/Sub Lite. Questo documento spiega anche il concetto di unità di capacità e come e stabilire quante ne hai bisogno per gestire la velocità effettiva della tua applicazione.

Panoramica delle prenotazioni Lite

Esegui il provisioning delle prenotazioni Lite e condividi dinamicamente la capacità della velocità effettiva tra uno o più argomenti Lite in una regione. Questi argomenti possono essere Lite a livello di regione o zona argomenti. L'utilizzo delle prenotazioni Lite è un'opzione migliore rispetto all'impostazione della velocità effettiva dei singoli argomenti Lite. Con le prenotazioni Lite, puoi gestire e monitorerai meno risorse. Inoltre, non devi scegliere la capacità della velocità effettiva di singoli argomenti Lite.

Per utilizzare una prenotazione Lite, collega un argomento Lite che si trova nella la stessa regione alla prenotazione Lite specifica. Puoi collegare un singolo file Lite per gli argomenti Lite a livello di zona e di regione. Tutte le partizioni in un Un argomento Lite collegato a una prenotazione Lite viene utilizzato dinamicamente dalla capacità di velocità effettiva di cui è stato eseguito il provisioning nella prenotazione Lite. Se sì specifica una prenotazione Lite per un argomento Lite, puoi anche includere limiti per limitare la capacità di velocità effettiva di ogni partizione dell'argomento Lite.

Panoramica delle unità di capacità

Il provisioning della capacità di velocità effettiva di una prenotazione Lite viene eseguito in unità di capacità.

Un'unità di capacità corrisponde alla seguente velocità effettiva:

Tipo di argomento Lite Velocità effettiva di pubblicazione in MiBps Velocità effettiva di sottoscrizione in MiBps
A livello di zona 1 2
Regionale 0,25 0,5

Linee guida per assegnare un nome a una prenotazione

Un nome risorsa Pub/Sub Lite identifica in modo univoco Risorsa Pub/Sub Lite, ad esempio un argomento, una sottoscrizione prenotazione. Il nome della risorsa deve rientrare nel seguente formato:

projects/project-identifier/collection/ID

  • project-identifier: deve essere l'ID o il numero di progetto, disponibile nel nella console Google Cloud. Ad esempio, my-cool-project è un ID progetto. 123456789123 è un numero di progetto.

  • collection: deve essere topics, subscriptions o reservations.

  • ID: deve essere conforme alle seguenti linee guida:

    • Non iniziare con la stringa goog
    • Inizia con una lettera
    • Contenere tra 3 e 255 caratteri
    • Contenere solo i seguenti caratteri: lettere [A-Za-z], numeri [0-9], trattini -, trattini bassi _, punti ., tilde ~, segni più + e segni di percentuale %

    Puoi utilizzare i caratteri speciali dell'elenco precedente nei nomi delle risorse senza codifica URL. Tuttavia, devi assicurarti che tutti gli altri caratteri speciali siano codificati o decodificati correttamente quando li utilizzi negli URL. Ad esempio, mi-tópico è un ID non valido. Tuttavia, mi-t%C3%B3pico è valido. Questo formato è importante quando esegui chiamate REST.

Linee guida per l'utilizzo di una prenotazione Lite

Il provisioning della velocità effettiva con le prenotazioni Lite è obbligatorio per le prenotazioni Lite a livello di regione ed è facoltativo per gli argomenti Lite a livello di zona. Una prenotazione Lite è un servizio risorsa.

Quando prevedi di configurare un'app Lite, tieni presente quanto segue prenotazione:

  • Il numero di unità di capacità necessarie per una prenotazione Lite deve essere uguale al la velocità effettiva massima prevista in un dato minuto per tutti gli argomenti abbonamenti in quella prenotazione Lite.

  • Quando la velocità effettiva combinata di tutti gli argomenti Lite in una prenotazione Lite raggiunge la sua capacità massima, la pubblicazione e la pubblicazione vengono limitate. I server Pub/Sub Lite interrompono l'invio di messaggi ai client e i messaggi vengono inseriti nel buffer nel client del publisher. Puoi configurare un avviso per reservation/throughput_capacity/utilization per informarti quando la prenotazione rischia di essere limitata così da poter aumentare la dimensione della prenotazione.

  • Puoi aggiornare la velocità effettiva delle prenotazioni tutte le volte che vuoi. Le modifiche diventeranno effettive tra meno di un minuto. Tuttavia, se riduci un velocità effettiva della prenotazione, ti verranno addebitati i costi per un periodo di 24 ore. Pub/Sub Lite è intrinsecamente un servizio di in cui gli scale up sono istantanei e gli scale down sono possibili.

  • Tutti gli argomenti Lite collegati a una prenotazione Lite utilizzano lo stesso pool di e la capacità di velocità effettiva massima. Di conseguenza, è possibile che un argomento Lite utilizzi improvvisamente una un'elevata capacità di velocità effettiva, l'esaurimento di altri argomenti Lite e la di pubblicare o ricevere messaggi. Se hai bisogno di un isolamento completo tra gli argomenti Lite, puoi collegarli a prenotazioni indipendenti.

Impatto delle partizioni su una prenotazione Lite

Il numero totale di partizioni di tutti gli argomenti Lite in una prenotazione Lite deve non sia superiore al numero di unità di capacità prenotate. Ad esempio, impossibile collegare una prenotazione Lite di 10 unità di capacità a un argomento Lite o a un insieme Argomenti Lite il cui numero totale di partizioni è maggiore di 10.

Calcolare le unità di capacità per una prenotazione Lite

La dimensione di una prenotazione Lite è definita dal numero di unità di capacità. La i seguenti esempi illustrano come stimare la capacità richiesta singoli argomenti Lite.

  1. Determinare la velocità effettiva di pubblicazione massima.

    Stima il picco della velocità effettiva di tutti gli argomenti Lite collegati al Prenotazione Lite. Una stima approssimativa della velocità effettiva è perché puoi sempre aggiornare le dimensioni della prenotazione.

  2. Determinare la velocità effettiva di sottoscrizione massima.

    La velocità effettiva di sottoscrizione massima è calcolata in modo simile alla velocità di pubblicazione massima e la velocità effettiva effettiva. Tuttavia, tieni presente che i tuoi iscritti non devono necessariamente ricevono messaggi con la massima frequenza tra gli editori. In caso di ritardi nell'elaborazione sono accettabili, Pub/Sub Lite consente di eseguire il buffering dei messaggi e li elaborerai a un ritmo costante. Allo stesso tempo, è possibile che tu voglia aumentare di abbonamento rispetto a quella di pubblicazione per soddisfare le di tempo di inattività degli abbonati.

  3. Determina il numero totale di unità di capacità richieste.

    La tabella nella sezione precedente specifica il numero di MiBps che un'unità di capacità può ospitare per diverse operazioni. Le seguenti è la formula per calcolare le unità di capacità richieste per un campione Prenotazione Lite:

    • Velocità effettiva di pubblicazione massima per gli argomenti Lite a livello di zona = Pz MiBps
    • Velocità effettiva di pubblicazione massima per gli argomenti Lite a livello di regione = Pr MiBps
    • Velocità effettiva di sottoscrizione massima per gli argomenti Lite a livello di zona = Sz MiBps
    • Velocità effettiva di sottoscrizione massima per gli argomenti Lite a livello di regione = Sr MiBps

      Numero di unità di capacità richieste = (Pz / 1 MiBps) + (Pr/0.25 MiBps) + (Sz/2 MiBps) + (Sr/0.5 MiBps)

      Se il numero non è intero, devi arrotondare il valore.

Configura la capacità di velocità effettiva senza una prenotazione Lite

  • Capacità velocità effettiva di pubblicazione argomento: puoi specificare da 4 a 16 MiBps di di velocità effettiva massima e il valore deve essere un numero intero.

  • Capacità di velocità effettiva di sottoscrizione all'argomento: puoi specificare da 4 a 32 MiBps di di velocità effettiva massima e il valore deve essere un numero intero.

Per la velocità effettiva di sottoscrizione, ti consigliamo di eseguire il provisioning della velocità effettiva in modo che corrisponda al prodotto della velocità effettiva di pubblicazione prevista e al numero di sottoscrizioni sul tuo argomento.

La capacità del publisher e del sottoscrittore di cui è stato eseguito il provisioning per un singolo argomento non viene intercambiabili. Per questo motivo, consigliamo di utilizzare sempre le prenotazioni.

Esistono differenze nella fatturazione quando esegui direttamente il provisioning della capacità anziché utilizzare le prenotazioni. Consulta la pagina dei prezzi di Pub/Sub Lite per maggiori dettagli.

Crea una prenotazione Lite

Una prenotazione Lite deve trovarsi nello stesso progetto e nella stessa regione di tutti gli argomenti Lite collegati. Per un elenco delle zone e delle regioni disponibili, consulta Località Pub/Sub Lite

Puoi creare una prenotazione Lite con la console Google Cloud, Google Cloud CLI o l'API Pub/Sub Lite.

Console

  1. Vai alla pagina Prenotazioni Lite.

    Vai a Prenotazioni Lite

  2. Fai clic su Crea prenotazione Lite.

  3. Seleziona una regione.

  4. Inserisci un ID prenotazione Lite.

  5. Esegui il provisioning della quantità di unità di capacità di velocità effettiva.

  6. Fai clic su Crea.

gcloud

Per creare una prenotazione Lite, utilizza il metodo 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

Vai

Prima di eseguire questo esempio, segui le istruzioni di configurazione di Go in Librerie client 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

Prima di eseguire questo esempio, segui le istruzioni di configurazione di Java in Librerie client 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

Prima di eseguire questo esempio, segui le istruzioni di configurazione di Python in Librerie client 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.")

Aggiorna una prenotazione Lite

Puoi aggiornare il numero di unità di capacità configurate per una prenotazione Lite.

Puoi aggiornare una prenotazione Lite con la console Google Cloud, Google Cloud CLI o l'API Pub/Sub Lite.

Console

  1. Vai alla pagina Prenotazioni Lite.

    Vai a Prenotazioni Lite

  2. Fai clic sull'ID prenotazione Lite.

  3. Nella pagina dei dettagli della prenotazione Lite, fai clic su Modifica.

gcloud

Per aggiornare una prenotazione Lite, utilizza il metodo gcloud pubsub lite-reservations update :

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

Sostituisci quanto segue:

  • RESERVATION_ID: l'ID della prenotazione Lite
  • REGION: la regione della prenotazione
  • THROUGHPUT_CAPACITY: la capacità della velocità effettiva di prenotazione.

Vai

Prima di eseguire questo esempio, segui le istruzioni di configurazione di Go in Librerie client 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

Prima di eseguire questo esempio, segui le istruzioni di configurazione di Java in Librerie client 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

Prima di eseguire questo esempio, segui le istruzioni di configurazione di Python in Librerie client 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.")

Visualizza i dettagli della prenotazione Lite

Puoi ottenere i dettagli di una prenotazione Lite utilizzando la console Google Cloud, Google Cloud CLI o l'API Pub/Sub Lite.

Console

  1. Vai alla pagina Prenotazioni Lite.

    Vai a Prenotazioni Lite

  2. Fai clic sull'ID prenotazione Lite.

gcloud

Per ottenere i dettagli di una prenotazione Lite, utilizza il metodo gcloud pubsub lite-reservations describe :

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

Sostituisci quanto segue:

  • RESERVATION_ID: l'ID della prenotazione Lite
  • REGION: la regione della prenotazione

Vai

Prima di eseguire questo esempio, segui le istruzioni di configurazione di Go in Librerie client 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

Prima di eseguire questo esempio, segui le istruzioni di configurazione di Java in Librerie client 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

Prima di eseguire questo esempio, segui le istruzioni di configurazione di Python in Librerie client 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.")

Elenco prenotazioni Lite

Console

gcloud

Per visualizzare un elenco delle prenotazioni Lite in un progetto, utilizza gcloud pubsub lite-reservations list :

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

Sostituisci quanto segue:

  • REGION: la regione della prenotazione

Vai

Prima di eseguire questo esempio, segui le istruzioni di configurazione di Go in Librerie client 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

Prima di eseguire questo esempio, segui le istruzioni di configurazione di Java in Librerie client 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

Prima di eseguire questo esempio, segui le istruzioni di configurazione di Python in Librerie client 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.")

Eliminare una prenotazione Lite

Puoi eliminare le prenotazioni Lite con la console Google Cloud, Google Cloud CLI o l'API Pub/Sub Lite. Per eliminare una prenotazione, non devono contenere argomenti. Puoi collegare gli argomenti esistenti a un ed eliminare la prenotazione.

Console

  1. Vai alla pagina Prenotazioni Lite.

    Vai a Prenotazioni Lite

  2. Fai clic sull'ID prenotazione Lite.

  3. Nella pagina dei dettagli della prenotazione Lite, fai clic su Elimina.

  4. Nella finestra di dialogo visualizzata, fai clic su Elimina per confermare. per eliminare la prenotazione Lite.

gcloud

Per eliminare una prenotazione Lite, utilizza gcloud pubsub lite-reservations delete :

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

Sostituisci quanto segue:

  • RESERVATION_ID: l'ID della prenotazione Lite
  • REGION: la regione della prenotazione

Vai

Prima di eseguire questo esempio, segui le istruzioni di configurazione di Go in Librerie client 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

Prima di eseguire questo esempio, segui le istruzioni di configurazione di Java in Librerie client 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

Prima di eseguire questo esempio, segui le istruzioni di configurazione di Python in Librerie client 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.")

Passaggi successivi