Un connettore di origine Pub/Sub trasmette i messaggi da Pub/Sub a Managed Service per Apache Kafka, che ti consente di integrare Pub/Sub con le tue applicazioni e pipeline di dati basate su Kafka. I casi d'uso tipici includono l'importazione dati in tempo reale per l'elaborazione dei flussi e la creazione di architetture basate su eventi.
Panoramica
Questo connettore legge i messaggi da una sottoscrizione Pub/Sub, converte ogni messaggio in un record Kafka e scrive i record in un argomento Kafka. Per impostazione predefinita, il connettore crea i record Kafka nel seguente modo:
- La chiave del record Kafka è
null. - Il valore del record Kafka corrisponde ai dati del messaggio Pub/Sub sotto forma di byte.
- Le intestazioni dei record Kafka sono vuote.
Tuttavia, puoi configurare questo comportamento. Per saperne di più, consulta Configura il connettore.
Prima di iniziare
Prima di creare un connettore di origine Pub/Sub, assicurati di disporre di quanto segue:
Un argomento Pub/Sub con una sottoscrizione.
Un argomento Kafka all'interno del cluster Kafka.
Un cluster di connessione. Quando crei il cluster Connect, imposta il cluster Managed Service per Apache Kafka come cluster Kafka principale.
Ruoli e autorizzazioni richiesti
Per ottenere le autorizzazioni necessarie per creare un connettore, chiedi all'amministratore di concederti il ruolo IAM Managed Kafka Connector Editor (roles/managedkafka.connectorEditor) nel progetto.
Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.
Questo ruolo predefinito contiene le autorizzazioni necessarie per creare un connettore. Per vedere quali sono esattamente le autorizzazioni richieste, espandi la sezione Autorizzazioni obbligatorie:
Autorizzazioni obbligatorie
Per creare un connettore sono necessarie le seguenti autorizzazioni:
-
Crea un connettore:
managedkafka.connectors.create
Potresti anche ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.
Concedi le autorizzazioni per leggere da Pub/Sub
L'agente di servizio Managed Kafka deve disporre dell'autorizzazione per leggere i messaggi dalla sottoscrizione Pub/Sub. Concedi all'agente di servizio i seguenti ruoli IAM nel progetto che contiene la sottoscrizione:
- Pub/Sub Subscriber (
roles/pubsub.subscriber) - Pub/Sub Viewer (
roles/pubsub.viewer)
Se il cluster di connessione si trova in un progetto diverso da quello del cluster Managed Service per Apache Kafka, consulta Crea un cluster di connessione in un progetto diverso.
Crea un connettore di origine Pub/Sub
Console
Nella console Google Cloud , vai alla pagina Connetti i cluster.
Fai clic sul cluster di connessione in cui vuoi creare il connettore.
Fai clic su Crea connettore.
Inserisci una stringa per il nome del connettore.
Per maggiori informazioni su come assegnare un nome a un connettore, consulta le linee guida per assegnare un nome a una risorsa Managed Service per Apache Kafka.
In Plugin connettore, seleziona Origine Pub/Sub.
Nell'elenco Sottoscrizione Cloud Pub/Sub, seleziona una sottoscrizione Pub/Sub. Il connettore esegue il pull dei messaggi da questa sottoscrizione. La sottoscrizione viene visualizzata come nome completo della risorsa:
projects/{project}/subscriptions/{subscription}.Nell'elenco Argomento Kafka, seleziona l'argomento Kafka in cui vengono scritti i messaggi.
(Facoltativo) Nella casella Configurazioni, aggiungi le proprietà di configurazione o modifica le proprietà predefinite. Per saperne di più, consulta Configura il connettore.
Seleziona la Policy di riavvio attività. Per saperne di più, consulta Policy di riavvio delle attività.
Fai clic su Crea.
gcloud
Esegui il comando gcloud
managed-kafka connectors create:
gcloud managed-kafka connectors create CONNECTOR_ID \
--connect-cluster=CONNECT_CLUSTER_ID \
--location=LOCATION \
--config-file=CONFIG_FILE
Sostituisci quanto segue:
CONNECTOR_ID: l'ID o il nome del connettore.CONNECT_CLUSTER_ID: l'ID del cluster Connect in cui viene creato il connettore.LOCATION: la località del cluster Connect.CONFIG_FILE: il percorso di un file di configurazione YAML o JSON locale.
Ecco un esempio di file di configurazione:
connector.class: "com.google.pubsub.kafka.source.CloudPubSubSourceConnector"
cps.project: "PROJECT_ID"
cps.subscription: "PUBSUB_SUBSCRIPTION_ID"
kafka.topic: "KAFKA_TOPIC_ID"
value.converter: "org.apache.kafka.connect.converters.ByteArrayConverter"
key.converter: "org.apache.kafka.connect.storage.StringConverter"
tasks.max: "3"
Sostituisci quanto segue:
PROJECT_ID: l'ID del progetto Google Cloud in cui si trova la sottoscrizione Pub/Sub.
PUBSUB_SUBSCRIPTION_ID: l'ID della sottoscrizione Pub/Sub da cui estrarre i dati.
KAFKA_TOPIC_ID: l'ID dell'argomento Kafka in cui vengono scritti i dati.
Le proprietà di configurazione cps.project, cps.subscription e kafka.topic sono obbligatorie. Per ulteriori opzioni di configurazione, consulta Configura il connettore.
Terraform
Puoi utilizzare una risorsa Terraform per creare un connettore.
Per scoprire come applicare o rimuovere una configurazione Terraform, consulta Comandi Terraform di base.
Vai
Prima di provare questo esempio, segui le istruzioni di configurazione di Go in Installa le librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Go di Managed Service per Apache Kafka.
Per eseguire l'autenticazione in Managed Service per Apache Kafka, configura le Credenziali predefinite dell'applicazione(ADC). Per saperne di più, consulta Configura ADC per un ambiente di sviluppo locale.
Java
Prima di provare questo esempio, segui le istruzioni di configurazione di Java riportate in Installa le librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Java di Managed Service per Apache Kafka.
Per eseguire l'autenticazione in Managed Service per Apache Kafka, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura ADC per un ambiente di sviluppo locale.
Python
Prima di provare questo esempio, segui le istruzioni di configurazione di Python in Installa le librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Python di Managed Service per Apache Kafka.
Per eseguire l'autenticazione in Managed Service per Apache Kafka, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura ADC per un ambiente di sviluppo locale.
Dopo aver creato un connettore, puoi modificarlo, eliminarlo, metterlo in pausa, arrestarlo o riavviarlo.
Configura il connettore
Questa sezione descrive alcune proprietà di configurazione che puoi impostare sul connettore.
Per un elenco completo delle proprietà specifiche di questo connettore, consulta Configurazioni del connettore di origine Pub/Sub.
Modalità pull
La modalità di pull specifica il modo in cui il connettore recupera i messaggi Pub/Sub. Sono supportate le seguenti modalità:
Modalità pull (predefinita). I messaggi vengono estratti in batch. Per attivare questa modalità, imposta
cps.streamingPull.enabled=false.. Per configurare le dimensioni del batch, imposta la proprietàcps.maxBatchSize.Per saperne di più sulla modalità pull, consulta API Pull.
Modalità pull in streaming. Consente di ottenere la massima velocità effettiva e la latenza più bassa durante il recupero dei messaggi da Pub/Sub. Per attivare questa modalità, imposta
cps.streamingPull.enabled=true.Per saperne di più sulla modalità di pull in modalità flusso, consulta API StreamingPull.
Se il pull in modalità flusso è abilitato, puoi ottimizzare le prestazioni impostando le seguenti proprietà di configurazione:
cps.streamingPull.flowControlBytes: il numero massimo di byte di messaggi in sospeso per attività.cps.streamingPull.flowControlMessages: il numero massimo di messaggi in sospeso per attività.cps.streamingPull.maxAckExtensionMs: il tempo massimo per cui il connettore estende la scadenza della sottoscrizione, in millisecondi.cps.streamingPull.maxMsPerAckExtension: il tempo massimo per cui il connettore estende la scadenza della sottoscrizione per estensione, in millisecondi.cps.streamingPull.parallelStreams: il numero di stream per eseguire il pull dei messaggi dalla sottoscrizione.
Endpoint Pub/Sub
Per impostazione predefinita, il connettore utilizza l'endpoint Pub/Sub globale. Per specificare un endpoint, imposta la proprietà cps.endpoint sull'indirizzo dell'endpoint.
Per saperne di più sugli endpoint, consulta Endpoint Pub/Sub.
Partizioni Kafka
Per impostazione predefinita, il connettore scrive in una singola partizione dell'argomento. Per specificare il numero di partizioni in cui il connettore scrive, imposta la proprietà kafka.partition.count. Il valore non deve superare il numero di partizioni dell'argomento.
Per specificare il modo in cui il connettore assegna i messaggi alle partizioni, imposta la proprietà kafka.partition.scheme. Per saperne di più, consulta Configurazioni del connettore di origine Pub/Sub.
Utenti che hanno completato una conversione
Imposta il convertitore di chiavi su org.apache.kafka.connect.storage.StringConverter.
A seconda della configurazione del connettore, imposta il convertitore di valori su uno dei seguenti:
org.apache.kafka.connect.converters.ByteArrayConverterorg.apache.kafka.connect.json.JsonConverter
Per saperne di più, consulta Valore del record.
Conversione messaggi
Il connettore di origine Pub/Sub converte i messaggi Pub/Sub in record Kafka. Le sezioni seguenti descrivono il processo di conversione.
Chiave di registrazione
Il convertitore di chiavi deve essere org.apache.kafka.connect.storage.StringConverter.
Per impostazione predefinita, le chiavi dei record sono
null.Per utilizzare un attributo del messaggio Pub/Sub come chiave, imposta
kafka.key.attributesul nome dell'attributo. Ad esempiokafka.key.attribute=username.Per utilizzare la chiave di ordinamento Pub/Sub come chiave, imposta
kafka.key.attribute=orderingKey.
Intestazioni dei record
Per impostazione predefinita, le intestazioni dei record sono vuote.
Se kafka.record.headers è true, gli attributi dei messaggi Pub/Sub vengono scritti come intestazioni dei record. Per includere la chiave di ordinamento, imposta cps.makeOrderingKeyAttribute=true.
Valore del record
I valori dei record vengono scritti come array di byte o come tipi struct.
Valori dei record di array di byte
Se kafka.record.headers è true o il messaggio Pub/Sub non ha attributi personalizzati, il connettore scrive i dati del messaggio come array di byte.
Imposta il convertitore di valori su org.apache.kafka.connect.converters.ByteArrayConverter.
Valori dei record Struct
Se kafka.record.headers è false e il messaggio ha almeno un attributo personalizzato, il connettore scrive il valore del record come struct. Imposta il convertitore di valori su org.apache.kafka.connect.json.JsonConverter.
struct contiene i seguenti campi:
message: i dati del messaggio Pub/Sub, in byte.Un campo per ogni attributo del messaggio Pub/Sub. Per includere la chiave di ordinamento, imposta
cps.makeOrderingKeyAttribute=true.
Ad esempio, se il messaggio ha un attributo username, il valore del record è simile al seguente:
{
"message":"MESSAGE_DATA",
"username":"Alice"
}
Se value.converter.schemas.enable è true, struct include sia il payload che lo schema:
{
"schema":
{
"type":"struct",
"fields": [
{
"type":"bytes",
"optional":false,
"field":"message"
},
{
"type":"string",
"optional":false,
"field":"username"
}
],
"optional":false
},
"payload": {
"message":"MESSAGE_DATA",
"username":"Alice"
}
}