Questo documento spiega come creare, aggiornare, visualizzare ed eliminare un argomento Pub/Sub. Questo documento spiega anche come denominare argomenti e iscrizioni.
Replica dei dati in un argomento
Un argomento Pub/Sub utilizza tre zone per archiviare i dati. Il servizio garantisce la replica sincrona in almeno due zone e la replica del miglior tentativo in una terza zona aggiuntiva. La replica Pub/Sub si trova all'interno di una sola regione.
Proprietà di un argomento
Quando crei o aggiorni un argomento, devi specificarne le proprietà.
Aggiungi un abbonamento predefinito. Aggiunge una sottoscrizione predefinita all'argomento Pub/Sub. Puoi creare un'altra sottoscrizione per l'argomento dopo averlo creato. L'abbonamento predefinito ha le seguenti proprietà:
- ID abbonamento di
-sub
- Tipo di distribuzione pull
- Durata di conservazione dei messaggi di 7 giorni
- Scadenza dopo 31 giorni di inattività
- Scadenza conferma di 10 secondi
- Criterio immediato per nuovi tentativi
- ID abbonamento di
Schema. Uno schema è un formato che il campo dei dati del messaggio deve seguire. Uno schema è un contratto tra l'editore e il sottoscrittore applicato da Pub/Sub. Gli schemi di argomenti consentono di standardizzare i tipi di messaggi e le autorizzazioni per consentirne l'utilizzo da parte di diversi team dell'organizzazione. Pub/Sub crea un'autorità centrale per tipi di messaggi e autorizzazioni. Per creare un argomento con lo schema, consulta Creare e gestire gli schemi.
Durata di conservazione dei messaggi. Specifica per quanto tempo l'argomento Pub/Sub conserva i messaggi dopo la pubblicazione. Una volta terminata la durata della conservazione dei messaggi, Pub/Sub potrebbe ignorarlo indipendentemente dal suo stato di conferma. Per l'archiviazione di tutti i messaggi pubblicati nell'argomento vengono addebitate le tariffe di archiviazione dei messaggi.
- Predefinito = non attivato
- Valore minimo = 10 minuti
- Valore massimo = 31 giorni
Utilizza una chiave di crittografia gestita dal cliente (CMEK). Specifica se l'argomento è criptato con una CMEK. Pub/Sub cripta i messaggi con le chiavi gestite da Google per impostazione predefinita. Se specifichi questa opzione, Pub/Sub utilizza il pattern di crittografia della busta con CMEK. Con questo approccio, Cloud KMS non cripta i messaggi. Cloud KMS cripta invece le chiavi di crittografia dei dati (DEK) che Pub/Sub crea per ogni argomento. Pub/Sub cripta i messaggi utilizzando la DEK più recente generata per l'argomento. Pub/Sub decripta i messaggi poco prima che vengano recapitati ai sottoscrittori. Per ulteriori informazioni sulla creazione di una chiave, consulta Configurare la crittografia dei messaggi.
Linee guida per il nome di un argomento, una sottoscrizione o uno snapshot
Il nome di una risorsa Pub/Sub identifica in modo univoco una risorsa Pub/Sub, ad esempio un argomento, una sottoscrizione o uno snapshot. Il nome della risorsa deve rispettare il seguente formato:
projects/project-identifier/collection/ID
project-identifier
: deve essere l'ID progetto, disponibile nella console Google Cloud. Ad esempio,my-cool-project
.collection
: deve esseretopics
,subscriptions
osnapshots
.ID
: deve essere conforme alle seguenti linee guida:- Non inizia con la stringa
goog
- Inizia con una lettera
- Contengono da 3 a 255 caratteri
- Contengono solo i seguenti caratteri: lettere
[A-Za-z]
, numeri[0-9]
, trattini-
, trattini bassi_
, punti.
, tilde~
, segni più+
e segni percentuali%
.
Puoi utilizzare i caratteri speciali nell'elenco precedente nei nomi delle risorse senza codifica degli 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, il valoremi-t%C3%B3pico
è valido. Questo formato è importante quando si effettuano chiamate REST.- Non inizia con la stringa
Crea un argomento
Crea un argomento prima di poterlo pubblicare o iscriverti.
Console
Per creare un argomento:
Nella console Google Cloud, vai alla pagina Argomenti di Pub/Sub.
Fai clic su Crea argomento.
Nel campo ID argomento, inserisci un ID per l'argomento.
Mantieni l'opzione Aggiungi un abbonamento predefinito.
Non selezionare le altre opzioni.
Fai clic su Crea argomento.
gcloud CLI
Per creare un argomento, esegui il comando gcloud pubsub topics create
:
gcloud pubsub topics create TOPIC_ID
REST
Per creare un argomento, utilizza il metodo projects.topics.create
:
La richiesta deve essere autenticata con un token di accesso nell'intestazione Authorization
. Per ottenere un token di accesso per le attuali Credenziali predefinite dell'applicazione: gcloud auth application-default print-access-token
.
PUT https://pubsub.googleapis.com/v1/projects/PROJECT_ID/topics/TOPIC_ID Authorization: Bearer ACCESS_TOKEN
Dove:
Risposta:
{ "name": "projects/PROJECT_ID/topics/TOPIC_ID" }
C++
Prima di provare questo esempio, segui le istruzioni per la configurazione di C++ nella guida rapida di Pub/Sub mediante librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento per l'API C++ Pub/Sub.
C#
Prima di provare questo esempio, segui le istruzioni per la configurazione di C# nella guida rapida di Pub/Sub mediante librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento per l'API C# Pub/Sub.
Go
Prima di provare questo esempio, segui le istruzioni per la configurazione di Go nella guida rapida di Pub/Sub mediante librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento per l'API Go Pub/Sub.
Java
Prima di provare questo esempio, segui le istruzioni per la configurazione di Java nella guida rapida di Pub/Sub mediante librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento per l'API Java Pub/Sub.
Node.js
Prima di provare questo esempio, segui le istruzioni per la configurazione di Node.js nella guida rapida di Pub/Sub mediante librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento per l'API Node.js Pub/Sub.
PHP
Prima di provare questo esempio, segui le istruzioni per la configurazione di PHP nella guida rapida di Pub/Sub mediante librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento per l'API PHP Pub/Sub.
Python
Prima di provare questo esempio, segui le istruzioni per la configurazione di Python nella guida rapida di Pub/Sub mediante librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento per l'API Python Pub/Sub.
Ruby
Prima di provare questo esempio, segui le istruzioni per la configurazione di Ruby nella guida rapida di Pub/Sub mediante librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento per l'API Ruby Pub/Sub.
Vincoli dei criteri dell'organizzazione
I criteri dell'organizzazione possono limitare la creazione di argomenti. Ad esempio, un criterio può limitare l'archiviazione dei messaggi in una regione di Compute Engine. Per evitare errori di creazione degli argomenti, esamina e aggiorna i criteri dell'organizzazione, se necessario, prima di creare un argomento.
Se il tuo progetto è stato appena creato, attendi alcuni minuti che il criterio dell'organizzazione venga inizializzato prima di creare un argomento.
Vai a Criteri dell'organizzazione
Creare un argomento con uno schema
Durante la creazione di un argomento, può essere utile assegnarlo uno schema.
Di seguito sono riportate alcune linee guida sull'utilizzo degli schemi:
- Non puoi aggiungere schemi ad argomenti esistenti.
- Puoi specificare uno schema solo quando crei un argomento.
- Dopo aver associato uno schema a un argomento, non puoi aggiornarlo o rimuovere la relativa associazione.
- Puoi applicare lo stesso schema ad altri nuovi argomenti.
- Se elimini uno schema, la pubblicazione in tutti gli argomenti associati non riesce.
Per saperne di più sugli schemi, consulta Creare e gestire gli schemi.
Console
Per creare un argomento e assegnargli uno schema, procedi nel seguente modo:
Nella console Google Cloud, vai alla pagina Argomenti Pub/Sub.
Fai clic su Crea argomento.
Nel campo ID argomento, inserisci un ID per l'argomento.
Seleziona la casella Utilizza uno schema. Lascia le altre opzioni nelle impostazioni predefinite.
Fai clic su Seleziona uno schema Pub/Sub e scegli Crea un nuovo schema. Se vuoi utilizzare uno schema esistente, vai al passaggio 7.
Nel campo ID schema, inserisci un ID per lo schema.
Per Tipo di schema, seleziona Avro o Buffer di protocollo.
Nel campo Definizione schema, inserisci la definizione Avro di buffer di protocollo per lo schema.
Fai clic su Crea per salvare lo schema.
Nella finestra di dialogo Crea un argomento, cerca lo schema nel campo Seleziona uno schema Pub/Sub.
Fai clic su Crea per salvare l'argomento e assegnarlo allo schema selezionato.
gcloud
Per creare un argomento assegnato con uno schema creato in precedenza, esegui il comando
gcloud pubsub topics create
:
gcloud pubsub topics create TOPIC_ID \ --message-encoding=ENCODING_TYPE \ --schema=SCHEMA_ID
Dove:
- TOPIC_ID è l'ID dell'argomento che stai creando.
- ENCODING_TYPE è la codifica dei messaggi convalidati in base allo schema. Questo valore deve essere impostato su
JSON
oBINARY
. - SCHEMA_ID è l'ID di uno schema esistente.
Puoi anche assegnare uno schema da un altro progetto Google Cloud:
gcloud pubsub topics create TOPIC_ID \ --message-encoding=ENCODING_TYPE \ --schema=SCHEMA_ID \ --schema-project=SCHEMA_PROJECT \ --project=TOPIC_PROJECT
Dove:
- SCHEMA_PROJECT è l'ID del progetto Google Cloud per lo schema.
- TOPIC_PROJECT è l'ID del progetto Google Cloud per l'argomento.
REST
Per creare un argomento, utilizza il metodo projects.topics.create
:
Richiesta:
La richiesta deve essere autenticata con un token di accesso nell'intestazione Authorization
. Per ottenere un token di accesso per le attuali Credenziali predefinite dell'applicazione: gcloud auth application-default print-access-token
.
PUT https://pubsub.googleapis.com/v1/projects/PROJECT_ID/topics/TOPIC_ID Authorization: Bearer ACCESS_TOKEN
Corpo della richiesta:
{ "schemaSettings": { "schema": "SCHEMA_NAME", "encoding": "ENCODING_TYPE" } }
Dove:
- PROJECT_ID è l'ID progetto.
- TOPIC_ID è il tuo ID argomento.
- SCHEMA_NAME è il nome dello schema per il quale devono essere convalidati i messaggi pubblicati. Il formato è:
projects/PROJECT_ID/schemas/SCHEMA_ID
. - ENCODING_TYPE è la codifica dei messaggi convalidati in base allo schema. Deve essere impostato su
JSON
oBINARY
.
Risposta:
{ "name": "projects/PROJECT_ID/topics/TOPIC_ID", "schemaSettings": { "schema": "SCHEMA_NAME", "encoding": "ENCODING_TYPE" } }
C++
Prima di provare questo esempio, segui le istruzioni di configurazione di C++ in Guida rapida: utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Pub/Sub C++.
C#
Prima di provare questo esempio, segui le istruzioni di configurazione di C# in Guida rapida all'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Pub/Sub C#.
Go
Prima di provare questo esempio, segui le istruzioni per la configurazione di Go in Guida rapida: utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento per l'API Pub/Sub Go.
Java
Prima di provare questo esempio, segui le istruzioni di configurazione di Java in Guida rapida: utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento per l'API Java di Pub/Sub.
Node.js
Prima di provare questo esempio, segui le istruzioni di configurazione di Node.js in Guida rapida: utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento per l'API Pub/Sub Node.js.
PHP
Prima di provare questo esempio, segui le istruzioni di configurazione di PHP in Guida rapida: utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento per l'API PHP Pub/Sub.
Python
Prima di provare questo esempio, segui le istruzioni di configurazione di Python in Guida rapida: utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento per l'API Python Pub/Sub.
Ruby
Prima di provare questo esempio, segui le istruzioni di configurazione di Ruby in Guida rapida: utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento per l'API Pub/Sub Ruby.
Eliminare un argomento
Quando elimini un argomento, le relative iscrizioni non vengono eliminate. Il backlog dei messaggi della sottoscrizione è disponibile per i sottoscrittori. Una volta eliminato un argomento, il nome dell'argomento delle relative sottoscrizioni è _deleted-topic_
. Se provi a creare un argomento con lo stesso nome di un argomento che hai appena eliminato, aspettati un errore per un breve periodo di tempo.
Console
Nella console Google Cloud, vai alla pagina Argomenti di Pub/Sub.
Seleziona un argomento e fai clic su
Altre azioni.Fai clic su Elimina.
Viene visualizzata la finestra Elimina argomento.
Inserisci
delete
e fai clic su Elimina.
gcloud CLI
Per eliminare un argomento, utilizza il comando gcloud pubsub topics delete
:
gcloud pubsub topics delete TOPIC_ID
REST
Per eliminare un argomento, utilizza il metodo projects.topics.delete
:
Richiesta:
La richiesta deve essere autenticata con un token di accesso nell'intestazione Authorization
. Per ottenere un token di accesso per le attuali Credenziali predefinite dell'applicazione: gcloud auth application-default print-access-token
.
DELETE https://pubsub.googleapis.com/v1/projects/PROJECT_ID/topics/TOPIC_ID Authorization: Bearer ACCESS_TOKEN
Dove:
Risposta:
Se la richiesta ha esito positivo, la risposta è un oggetto JSON vuoto.
C++
Prima di provare questo esempio, segui le istruzioni per la configurazione di C++ nella guida rapida di Pub/Sub mediante librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento per l'API C++ Pub/Sub.
C#
Prima di provare questo esempio, segui le istruzioni per la configurazione di C# nella guida rapida di Pub/Sub mediante librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento per l'API C# Pub/Sub.
Go
Prima di provare questo esempio, segui le istruzioni per la configurazione di Go nella guida rapida di Pub/Sub mediante librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento per l'API Go Pub/Sub.
Java
Prima di provare questo esempio, segui le istruzioni per la configurazione di Java nella guida rapida di Pub/Sub mediante librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento per l'API Java Pub/Sub.
Node.js
Prima di provare questo esempio, segui le istruzioni per la configurazione di Node.js nella guida rapida di Pub/Sub mediante librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento per l'API Node.js Pub/Sub.
PHP
Prima di provare questo esempio, segui le istruzioni per la configurazione di PHP nella guida rapida di Pub/Sub mediante librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento per l'API PHP Pub/Sub.
Python
Prima di provare questo esempio, segui le istruzioni per la configurazione di Python nella guida rapida di Pub/Sub mediante librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento per l'API Python Pub/Sub.
Ruby
Prima di provare questo esempio, segui le istruzioni per la configurazione di Ruby nella guida rapida di Pub/Sub mediante librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento per l'API Ruby Pub/Sub.
Elencare un argomento
Console
Nella console Google Cloud, vai alla pagina Argomenti di Pub/Sub.
Nella pagina Argomenti sono elencati tutti gli argomenti disponibili.
gcloud CLI
Per elencare gli argomenti, utilizza il comando gcloud pubsub topics list
:
gcloud pubsub topics list
REST
Per elencare gli argomenti, utilizza il metodo projects.topics.list
:
Richiesta:
La richiesta deve essere autenticata con un token di accesso nell'intestazione Authorization
. Per ottenere un token di accesso per le attuali Credenziali predefinite dell'applicazione: gcloud auth application-default print-access-token
.
GET https://pubsub.googleapis.com/v1/projects/PROJECT_ID/topics Authorization: Bearer ACCESS_TOKEN
Dove:
Risposta:
{ "topics": [ { "name": "projects/PROJECT_ID/topics/mytopic1", ... }, { "name": "projects/PROJECT_ID/topics/mytopic2", ... } ] }
C++
Prima di provare questo esempio, segui le istruzioni per la configurazione di C++ nella guida rapida di Pub/Sub mediante librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento per l'API C++ Pub/Sub.
C#
Prima di provare questo esempio, segui le istruzioni per la configurazione di C# nella guida rapida di Pub/Sub mediante librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento per l'API C# Pub/Sub.
Go
Prima di provare questo esempio, segui le istruzioni per la configurazione di Go nella guida rapida di Pub/Sub mediante librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento per l'API Go Pub/Sub.
Java
Prima di provare questo esempio, segui le istruzioni per la configurazione di Java nella guida rapida di Pub/Sub mediante librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento per l'API Java Pub/Sub.
Node.js
Prima di provare questo esempio, segui le istruzioni per la configurazione di Node.js nella guida rapida di Pub/Sub mediante librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento per l'API Node.js Pub/Sub.
PHP
Prima di provare questo esempio, segui le istruzioni per la configurazione di PHP nella guida rapida di Pub/Sub mediante librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento per l'API PHP Pub/Sub.
Python
Prima di provare questo esempio, segui le istruzioni per la configurazione di Python nella guida rapida di Pub/Sub mediante librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento per l'API Python Pub/Sub.
Ruby
Prima di provare questo esempio, segui le istruzioni per la configurazione di Ruby nella guida rapida di Pub/Sub mediante librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento per l'API Ruby Pub/Sub.
Per impostazione predefinita, vengono restituiti massimo 100 risultati per query. Puoi specificare un valore alternativo fino a 1000 utilizzando il parametro delle dimensioni della pagina.
Monitora gli argomenti
Puoi monitorare gli argomenti da Pub/Sub.
Passaggi successivi
Scegli il tipo di sottoscrizione per l'argomento.
Crea una iscrizione per il tuo argomento.
Crea o modifica un argomento con gcloud CLI.
Crea o modifica un argomento con le API REST.