Utilizzo del produttore eventi Kafka
Un abbonamento di tipo " Code Engine " ( Kafka ) monitora la comparsa di nuovi messaggi in un'istanza di " Kafka ". Quando crei una sottoscrizione per una serie di argomenti, la tua applicazione o lavoro riceve un evento separato per ogni nuovo messaggio visualizzato in uno degli argomenti. È possibile creare al massimo 100 abbonamenti a “ Kafka ” per progetto.
Sebbene sia possibile utilizzare qualsiasi istanza di Kafka, gli esempi riportati in questo argomento utilizzano il servizio IBM® Event Streams for IBM Cloud®. Event Streams è un servizio di streaming di eventi IBM per eventi Kafka. Per ulteriori informazioni su questo servizio, consultare la documentazione su Event Streams.
Configurazione del produttore eventi Kafka
È possibile configurare il proprio generatore di messaggi " Kafka " in modo che invii messaggi alle sottoscrizioni agli eventi " Code Engine " e " Kafka ". Utilizza la sottoscrizione all'evento Code Engine Kafka per attivare applicazioni o processi quando viene ricevuto un messaggio Kafka.
Per iniziare, crea un'istanza del servizio Event Streams per il tuo servizio Event Streaming. Mentre puoi utilizzare la console o la CLI, i seguenti passi descrivono come configurare il produttore di eventi Event Streams con la CLI.
Impostazione dell'ambiente CLI Event Streams
-
Scarica e installa la CLIIBM Cloud. Accedi alla CLI IBM Cloud.
ibmcloud login -
Scarica e installa la CLI Code Engine.
ibmcloud plugin install code-engine -f -
Per utilizzare il servizio Event Streams per creare l'istanza Kafka, scarica e installa la CLI Event Streams.
ibmcloud plugin install event-streams -f -
Accedi al tuo account IBM Cloud e specifica un gruppo di risorse. Specifica un gruppo di risorse immettendo il seguente comando: Per ottenere un elenco dei propri gruppi di risorse, eseguire il comando
ibmcloud resource groups.ibmcloud target -g <resource_group>
Configurazione dell'istanza di Kafka
-
Crea un'istanza del servizio per Event Streams. Il nome del servizio CLI Event Streams è
messagehub. Per questo esempio, crea un'istanza del servizio Event Streams denominatamyeventstream.ibmcloud resource service-instance-create myeventstream messagehub lite us-south -
Crea una chiave del servizio per fornire le credenziali alla tua istanza del servizio.
ibmcloud resource service-key-create myeventstream-key Manager --instance-name myeventstreamOutput di esempio
Creating service key of service instance myeventstream under account <user_account>... OK Service key crn:v1:bluemix:public:messagehub:us-south:a/e43abfcbd191404cb17ef650e9681dd3:c0736069-3f4a-438a-b614-6846877d692d:resource-key:4c8edfdb-abcd-abcd-abcd-abcdabcdabcd was created. Name: myeventstream-key ID: crn:v1:bluemix:public:messagehub:us-south:a/e43abfcbd191404cb17ef650e9681dd3:c0736069-3f4a-438a-b614-6846877d692d:resource-key:4c8edfdb-abcd-abcd-abcd-abcdabcdabcd Created At: Mon Mar 21 18:36:09 UTC 2022 State: active Credentials: api_key: abcdeH9tu3qE5Sn8VbJfcDEWtjR_l0iPisB3abcdefgh apikey: abcdeH9tu3qE5Sn8VbJfcDEWtjR_l0iPisB3abcdefgh iam_apikey_description: Auto-generated for key crn:v1:bluemix:public:messagehub:us-south:a/e43abfcbd191404cb17ef650e9681dd3:c0736069-3f4a-438a-b614-6846877d692d:resource-key:4c8edfdb-abcd-abcd-abcd-abcdabcdabcd iam_apikey_name: myeventstream-key iam_role_crn: crn:v1:bluemix:public:iam::::serviceRole:Manager iam_serviceid_crn: crn:v1:bluemix:public:iam-identity::a/e43abfcbd191404cb17ef650e9681dd3::serviceid:ServiceId-3e99caa5-b174-4f04-9845-5c5d783b8bc7 instance_id: c0736069-3f4a-438a-b614-6846877d692d kafka_admin_url: https://abcdabcdabcdabcd.svc07.us-south.eventstreams.cloud.ibm.com kafka_brokers_sasl: [broker-1-abcdabcdabcdabcd.kafka.svc07.us-south.eventstreams.cloud.ibm.com:9093 broker-2-abcdabcdabcdabcd.kafka.svc07.us-south.eventstreams.cloud.ibm.com:9093 broker-5-abcdabcdabcdabcd.kafka.svc07.us-south.eventstreams.cloud.ibm.com:9093 broker-3-abcdabcdabcdabcd.kafka.svc07.us-south.eventstreams.cloud.ibm.com:9093 broker-4-abcdabcdabcdabcd.kafka.svc07.us-south.eventstreams.cloud.ibm.com:9093 broker-0-abcdabcdabcdabcd.kafka.svc07.us-south.eventstreams.cloud.ibm.com:9093] kafka_http_url: https://abcdabcdabcdabcd.svc07.us-south.eventstreams.cloud.ibm.com password: abcdeH9tu3qE5Sn8VbJfcDEWtjR_l0iPisB3abcdefgh user: tokenPrendi nota dei valori per
user,passwordekafka-brokers_saslper la chiave del servizio. Hai bisogno di queste informazioni quando configuri la tua sottoscrizione Code Engine Kafka. I valori perpasswordeapikeysono gli stessi nella chiave del servizio per la tua istanza del servizio Event Streams. Puoi anche utilizzare il comandoibmcloud resource service-key myeventstream-keyper recuperare le informazioni sulla chiave di servizio. -
Inizializza il plug-in Event Streams relativo all'istanza del servizio Event Streams.
ibmcloud es init --instance-name myeventstream -
Crea un argomento Event Streams.
ibmcloud es topic-create kafka-topic1
Configurazione di un'applicazione di esempio Code Engine per produrre messaggi Kafka
Per questo scenario, utilizziamo un'applicazione Code Engine per agire come un produttore di eventi di messaggi Kafka. Lo scopo di questa applicazione è connettersi alla tua istanza Event Streams e inviare messaggi Kafka. Questa applicazione
utilizza Applicazione di esempio mittente Code Engine Kafka per inviare messaggi Kafka. Questa immagine mittente di esempio richiede la variabile
di ambiente BROKERS e un segreto che include le credenziali password. È possibile creare questa applicazione dalla console o tramite la CLI.
Assicurati di specificare l'intestazione Content-Type quando invii messaggi Kafka all'indirizzo Event Streams. Specificare questa intestazione in modo che il consumer possa ricevere messaggi con il tipo di contenuto previsto;
ad esempio, application/json.
Creazione di un segreto con credenziali richieste dagli esempi Kafka
Prima di creare l'applicazione Code Engine per inviare messaggi Kafka, crea un segreto Code Engine che contenga le credenziali richieste.
Prima di iniziare
- Determinare il progetto Code Engine che si desidera utilizzare e verificare che questo sia selezionato. Vedere Creazione e utilizzo di un progetto.
Per semplificare questo scenario, creare un unico segreto, kafka-subscription-secret, che contenga le credenziali necessarie sia per l'app di esempio del mittente Kafka sia per la sottoscrizione all'evento Kafka, che utilizza
l'app di esempio del destinatario Kafka. Queste credenziali sono necessarie affinché l'app mittente di esempio Kafka e l'abbonamento all'evento Code Engine Kafka possano comunicare con l'istanza del servizio disponibile all'indirizzo Event
Streams. Sebbene non sia necessario creare questo segreto prima di creare l'app mittente Kafka e la sottoscrizione all'evento, questa operazione semplifica i passaggi richiesti.
Creazione di un segreto con le credenziali richieste dagli esempi Kafka dalla console
Per creare il segreto kafka-subscription-secret dalla console, vai a Secrets and configmaps e fai clic su Create e seleziona il segreto che vuoi creare. Per ulteriori informazioni, vedi
Crea un segreto dalla console.
- Specifica la chiave
usernamecon il valore diuserelencato nei dettagli delle credenziali del servizio nell'istanza del servizio Event Streams. Per l'istanza del servizio Event Streams, questo valore ètoken. Questa chiave è obbligatoria per l'autenticazione tra la sottoscrizione evento Kafka Code Engine e il broker dei messaggi Kafka. - Specifica la chiave
passwordcon il valore diapikeyelencato nei dettagli delle credenziali del servizio nell'istanza del servizio Event Streams. Questa chiave è richiesta per l'esempio del mittente e per consentire le comunicazioni tra la sottoscrizione evento Code Engine Kafka e il broker dei messaggi Kafka.
Creazione di un segreto con le credenziali richieste dagli esempi Kafka con la CLI
Per creare il segreto kafka-subscription-secret con la CLI, aggiungi una variabile di ambiente letterale per password e username. Per ulteriori informazioni, vedi Crea un segreto con la CLI.
-
Specifica la chiave
usernamecon il valore diuserelencato nei dettagli delle credenziali del servizio nell'istanza del servizio Event Streams. Per l'istanza del servizio Event Streams, questo valore ètoken. Questa chiave è obbligatoria per l'autenticazione tra la sottoscrizione evento Kafka Code Engine e il broker dei messaggi Kafka. -
Specifica la chiave
passwordcon il valore diapikeyelencato nei dettagli delle credenziali del servizio nell'istanza del servizio Event Streams. Questa chiave è richiesta per l'esempio del mittente e per consentire le comunicazioni tra la sottoscrizione evento Code Engine Kafka e il broker dei messaggi Kafka.ibmcloud ce secret create --name kafka-subscription-secret --from-literal password=<value_of_apikey> --from-literal username=<value_of_user>Ad esempio,
ibmcloud ce secret create --name kafka-subscription-secret --from-literal password=abcdeH9tu3qE5Sn8VbJfcDEWtjR_l0iPisB3abcdefgh --from-literal username=token
Creazione di un'applicazione Code Engine per inviare eventi
Crea un'applicazione " Code Engine " per connetterti alla tua istanza di Event Streams e generare (inviare) messaggi Kafka a un destinatario di messaggi Kafka (consumer Kafka ).
Creazione di un'applicazione Code Engine per inviare eventi dalla console
Per creare l'applicazione kafka-sender-app dalla console, completare la seguente procedura.
-
Creare un'applicazione Code Engine chiamato
kafka-sender-appcon le seguenti informazioni.- Fai riferimento all'immagine del contenitore
icr.io/codeengine/kafka-senderper questa applicazione. Questa immagine viene creata dasender.go, che è disponibile dal repository Esempi per IBM Cloud Code Engine GitHub. Questa applicazione mittente di esempio richiede valori perpasswordeBROKERS. - Nella sezione Variabili di ambiente (facoltativo), aggiungere le seguenti variabili di ambiente.
- Aggiungere una variabile di ambiente letterale,
BROKERS. Per il valore di questa chiave, specifica uno o più degli host broker elencati nei dettagli delle credenziali del servizio nell'istanza del servizio Event Streams. - Aggiungi un'altra variabile di ambiente a fai riferimento al segreto completo,
kafka-subscription-secret. Questo segreto contiene le credenziali perpassword.
- Aggiungere una variabile di ambiente letterale,
- (facoltativo) Nella sezione Risorse & ridimensionamento, specifica
1per il numero minimo di istanze in modo che l'applicazione abbia sempre un'istanza in esecuzione e non venga ridimensionata a zero. La configurazione dell'applicazione per avere sempre un'istanza in esecuzione è utile quando visualizzi i log. Se sei in esecuzione in un ambiente di produzione, considera il costo di mantenere un'istanza in esecuzione della tua applicazione o se vuoi che Code Engine venga ridimensionato automaticamente a zero. Per impostazione predefinita, l'app viene ridimensionata a zero quando non è in uso. - Fai clic su Crea per creare e distribuire la tua applicazione.
- Fai riferimento all'immagine del contenitore
-
Confermare che questa app si trova nello stato
ready.
Creazione di un'applicazione Code Engine per inviare eventi con la CLI
Per creare l'applicazione kafka-sender-app con la CLI, utilizza i seguenti comandi.
-
Creare un'applicazione Code Engine chiamato
kafka-sender-appcon le seguenti informazioni.- Specifica l'opzione
--imageper fare riferimento all'immagine del containericr.io/codeengine/kafka-sender. Questa immagine viene creata dasender.go, che è disponibile dal repository Esempi per IBM Cloud Code Engine GitHub. Questa applicazione mittente di esempio richiede le credenzialipasswordmemorizzate nel tuokafka-subscription-secrete richiede la variabile di ambienteBROKERS. - Specificare l'opzione
--env-from-secretper fare riferimento al segreto completo,kafka-subscription-secret, che contiene le credenzialipassword. - Specifica l'opzione
--envper aggiungere una variabile di ambiente letterale,BROKERS, e fornire il nome di uno degli host del broker elencati nei dettagli delle credenziali del servizio nell'istanza del servizio Event Streams. Tuttavia, se si desidera specificare più di un nome host del broker, utilizzare il formato--env BROKERS-broker1,broker2,broker3. - (Facoltativo) Specifica l'opzione
--min-scale=1in modo che l'applicazione abbia sempre un'istanza in esecuzione e non venga scalata a zero. La configurazione dell'applicazione per avere sempre un'istanza in esecuzione è utile quando visualizzi i log. Se sei in esecuzione in un ambiente di produzione, considera il costo di mantenere un'istanza in esecuzione della tua applicazione o se vuoi che Code Engine venga ridimensionato automaticamente a zero. Per impostazione predefinita, l'app viene ridimensionata a zero quando non è in uso.
ibmcloud ce app create --name kafka-sender-app --image icr.io/codeengine/kafka-sender --env-from-secret kafka-subscription-secret --env BROKERS=broker-4-abcdabcdabcdabcd.kafka.svc07.us-south.eventstreams.cloud.ibm.com:9093 --min-scale 1 - Specifica l'opzione
Configurazione di Code Engine per ricevere gli eventi Kafka per un'applicazione
Affinché Code Engine funzioni con gli eventi Kafka, utilizzare la console o la CLI per configurare un abbonamento agli eventi Code Engine Kafka, in modo da connettersi ai broker di eventi Kafka e ascoltare gli eventi Kafka. Inoltre, configura un'app (o un processo) " Code Engine " affinché funga da destinatario degli eventi " Kafka ". L'abbonamento agli eventi " Kafka " definisce la relazione tra il produttore (mittente) Kafka e il consumatore (destinatario) degli eventi.
La sottoscrizione agli eventi Code Engine Kafka si connette al broker di messaggi Kafka e invia richieste di posta HTTP per ogni messaggio Kafka in arrivo all'applicazione ricevente. Per ulteriori informazioni, vedere HTTP intestazioni e informazioni sul corpo degli eventi.
Sottoscrizione degli eventi Kafka per un'applicazione dalla console
È possibile utilizzare la console per configurare un abbonamento agli eventi di Kafka in modo che gli eventi vengano inviati a un'applicazione Code Engine.
Creazione di una applicazione Code Engine per ricevere eventi Kafka dalla console
- Crea un'applicazione Code Engine per agire come un consumatore di eventi di messaggi Kafka e ricevere gli eventi Kafka. Ad esempio, crea un'applicazione
denominata
kafka-receiver-appche utilizza l'immagineicr.io/codeengine/kafka-receiver. Questa immagine viene creata dareceiver.go, che è disponibile dal repository Esempi per IBM Cloud Code Engine GitHub. Questo esempio non richiede alcuna variabile di ambiente. - Dopo aver distribuito questa applicazione, conferma che si trova nello stato
ready.
Quando si utilizza la console, non è necessario che l'app o il processo utilizzato per ricevere gli eventi " Kafka " esista già prima di creare l'abbonamento all'evento " Kafka ". Tuttavia, se l'app o il lavoro non esiste quando si crea la sottoscrizione evento, lo stato della sottoscrizione indica che l'utente non esiste. Devi creare l'applicazione o il lavoro prima che la sottoscrizione sia in stato pronto e possa ricevere gli eventi tramite questa sottoscrizione.
Creazione di una sottoscrizione evento Code Engine Kafka per un'applicazione dalla console
L'abbonamento agli eventi " Kafka " definisce la relazione tra il produttore (mittente) Kafka e il consumatore (destinatario) degli eventi.
Prima di iniziare
- Determinare il progetto Code Engine che si desidera utilizzare e verificare che questo sia selezionato. Vedere Creazione e utilizzo di un progetto.
Completa la seguente procedura per creare una sottoscrizione evento Kafka per un'applicazione dalla console.
- Dalla pagina ProgettiCode Engine, vai al tuo progetto.
- Dalla pagina Panoramica, fare clic su Sottoscrizioni eventi.
- Dalla pagina Sottoscrizioni evento, fare clic su Crea per creare la sottoscrizione.
- Dalla pagina Crea una sottoscrizione evento, selezionare il tile
Event Streams / Kafkaper specificare il tipo di evento. - Per Generale, fornire un nome per la sottoscrizione
Event Streams / Kafka. Fai clic su " Avanti " per continuare. - Per ulteriori informazioni su Message Broker,
- Specificare gli host del broker di messaggi Kafka per le code di messaggi da cui vengono ricevuti i messaggi come eventi tramite questa sottoscrizione. Per ottenere informazioni su host, argomenti e credenziali di accesso del broker,
visualizza i dettagli della credenziale del servizio per la tua istanza del servizio nella console Event Streams. Ad esempio, specificare
"broker-0-abcdabcdabcdabcd.kafka.svc01.us-south.eventstreams.cloud.ibm.com:9093", "broker-1-abcdabcdabcdabcd.kafka.svc01.us-south.eventstreams.cloud.ibm.com:9093"per gli host del broker dei messaggi per l'istanza del serviziomyeventstream-key. Puoi trovare i broker per l'istanza del servizio nel campo Event Streams nel campoKafka_brokers_sasl. - Fare clic su Configura per configurare l'accesso al broker dei messaggi. Per autenticarti da Code Engine alla tua istanza Kafka o Event Streams, devi fornire un segreto di accesso del broker dei messaggi.
- È possibile creare un nuovo segreto, scegliere un segreto esistente oppure, se le credenziali non sono richieste per accedere ai broker dei messaggi, scegliere
None. - Per creare un segreto, fare clic su Crea. Fornire un nome per il segreto e i valori per
usernameepassword. I valori perusernameepassworddevono corrispondere ai valori nelle credenziali del servizio per l'istanza Kafka o Event Streams. Ad esempio, il valore perusernameè il valore diuserelencato nei dettagli delle credenziali del servizio nell'istanza del servizio Event Streams. Il valore perpasswordè quello diapikeyelencato nei dettagli delle credenziali del servizio nell'istanza del servizio Event Streams. - Per questo esempio, utilizzare il segreto
kafka-subscription-secretesistente precedentemente creato.
- È possibile creare un nuovo segreto, scegliere un segreto esistente oppure, se le credenziali non sono richieste per accedere ai broker dei messaggi, scegliere
- Specificare il nome degli argomenti esistenti per le code messaggi. Ad esempio,
kafka-topic1. Per ottenere informazioni sugli argomenti esistenti per la tua istanza del servizio, vai alla tua istanza del servizio nella console Event Streams e visualizza Argomenti. - (Facoltativo) Specificare un gruppo di consumatori. I consumer dei messaggi Kafka possono essere raggruppati in gruppi consumer. Se si utilizzano gruppi di consumatori, la configurazione dell'argomento controlla il flusso di messaggi per i consumatori nel gruppo di consumatori. Ogni volta che un consumer viene aggiunto o rimosso da un gruppo consumer, il flusso di messaggi da tale argomento potrebbe cambiare. Questa azione può far sì che i consumer esistenti non ricevano più messaggi da tale argomento.
- Fai clic su " Avanti " per proseguire.
- Specificare gli host del broker di messaggi Kafka per le code di messaggi da cui vengono ricevuti i messaggi come eventi tramite questa sottoscrizione. Per ottenere informazioni su host, argomenti e credenziali di accesso del broker,
visualizza i dettagli della credenziale del servizio per la tua istanza del servizio nella console Event Streams. Ad esempio, specificare
- Per Event consumer, specifica l'applicazione Code Engine per ricevere eventi. Nota che puoi scegliere da un elenco di applicazioni e lavori definiti oppure puoi fornire un nome per un'applicazione (o lavoro) che non è
ancora stata creata. Non è necessario che l'app o il lavoro esistano quando crei la sottoscrizione evento con la console. Tuttavia, quando la sottoscrizione viene creata, lo stato della sottoscrizione indica che l'utente non esiste.
Devi creare l'applicazione o il lavoro prima che la sottoscrizione sia in stato pronto e possa ricevere gli eventi tramite questa sottoscrizione. Per questo esempio, utilizza l'applicazione
kafka-receiver-appche fa riferimento all'immagineicr.io/codeengine/kafka-receiver. Se la tua applicazione non esiste, fornisci il nome della tua applicazione e crea la tua applicazione dopo aver creato la sottoscrizione Kafka. Solo per le applicazioni, è possibile specificare facoltativamente un percorso. Per impostazione predefinita, gli eventi vengono instradati al sito URL dell'applicazione di destinazione. È possibile inviare eventi a una destinazione diversa all'interno dell'app specificando un percorso. Ad esempio, se il tuo percorso di sottoscrizione specifica/events, gli eventi vengono inviati ahttps://<base application URL>/events. Fai clic su " Avanti " per continuare. - Per Riepilogo, esamina le impostazioni per la tua sottoscrizione evento Kafka e apporta le modifiche, se necessario. Quando pronto, fai clic su Crea per creare la sottoscrizione Kafka.
Invio di eventi all'applicazione ricevente dalla console
Ora che è stato creato l'abbonamento all'evento Kafka, che fa riferimento all'applicazione kafka-receiver-app, utilizza l' kafka-sender-app per inviare eventi di messaggio all'applicazione ricevente.
-
Avviare la registrazione per l'applicazione ricevente per visualizzare i log dell'applicazione dalla console per visualizzare eventi.
-
(facoltativo) Avviare la registrazione per l'applicazione mittente per visualizzare i log dell'applicazione dalla console per vedere le informazioni sugli eventi inviati.
-
Dopo aver avviato la registrazione, chiamare l'applicazione
kafka-sender-appconcurle specificare l'indirizzo URL pubblico dikafka-sender-app, il nome dell'argomento e il numero di messaggi da inviare. È possibile ottenere il sito URL pubblico di questa applicazione dalla scheda Domain mappings della propria applicazione. Ad esempio,curl "<public_URL_of_Kafka_sender_app>?topic=<your_topic_name>&num=<number_of_messages_to_produce>"
Assicurati di racchiudere il valore tra virgolette per assicurarti che sia trattato come una singola stringa.
Sottoscrizione degli eventi Kafka per un'applicazione con la CLI
È possibile utilizzare la CLI per configurare un abbonamento agli eventi di Kafka in modo che gli eventi vengano inviati a un'applicazione Code Engine.
Gli eventi vengono inviati alle applicazioni sotto forma di richieste POST all' HTTP. Per ulteriori informazioni sui dati inclusi negli eventi di tipo “ Kafka ”, consultare le intestazioni “ HTTP ” e le informazioni del corpo relative agli eventi. Se il tuo evento viene inviato a un processo Code Engine, il processo riceve gli eventi sotto forma di variabili d'ambiente. Per ulteriori informazioni sulle variabili d'ambiente relative agli abbonamenti a " Kafka ", consultare la sezione " Variabili d'ambiente per gli eventi ".
Creazione di un'applicazione Code Engine per ricevere gli eventi Kafka con la CLI
Prima di iniziare
-
Crea un'applicazione Code Engine per agire come un consumatore di eventi di messaggi Kafka e ricevere gli eventi Kafka. Ad esempio, crea un'applicazione denominata
kafka-receiver-app2che utilizza l'immagineicr.io/codeengine/kafka-receiver. Questa immagine viene creata dareceiver.go, che è disponibile dal repository Esempi per IBM Cloud Code Engine GitHub. Questo esempio non richiede alcuna variabile di ambiente. Facoltativamente, puoi specificare l'opzione--min-scale=1, in modo che l'app abbia sempre un'istanza in esecuzione e non venga ridimensionata a zero. La configurazione dell'applicazione per avere sempre un'istanza in esecuzione è utile quando visualizzi i log. Se sei in esecuzione in un ambiente di produzione, considera il costo di mantenere un'istanza in esecuzione della tua applicazione o se vuoi che Code Engine venga ridimensionato automaticamente a zero. Per impostazione predefinita, l'app viene ridimensionata a zero quando non è in uso.ibmcloud ce app create -n kafka-receiver-app2 --image icr.io/codeengine/kafka-receiver --min-scale 1Per impostazione predefinita, gli eventi vengono instradati al sito URL dell'applicazione di destinazione. Puoi inviare eventi a una destinazione differente all'interno dell'applicazione utilizzando l'opzione
--path. Ad esempio, se la tua sottoscrizione specifica--path /event, l'evento viene inviato ahttps://<base application URL>/events. -
Dopo che hai distribuito questa applicazione, esegui il comando
app getper confermare che l'applicazione si trova nello statoready.ibmcloud ce app get -n kafka-receiver-app2
Creazione di una sottoscrizione evento Kafka Code Engine per un'applicazione con la CLI
È possibile creare un abbonamento agli eventi " Kafka ", che definisce la relazione tra il produttore (mittente) Kafka e il consumatore (destinatario) degli eventi, tramite la CLI.
-
Crea una sottoscrizione evento Kafka Code Engine per i tuoi eventi Kafka utilizzando il comando
ibmcloud ce sub kafka create. Utilizzare il segretokafka-subscription-secretprecedentemente creato per accedere al broker dei messaggi. Specifica le informazioni del broker in base alle informazioni delle credenziali del servizio per la tua risorsa Kafka. Per questo esempio, è possibile ottenere le informazioni del broker dall'output del comandoibmcloud resource service-key myeventstream-key. Notare che è necessario specificare un'opzione--brokerper ciascun broker per il proprio argomento. L'opzione--destinationspecifica la risorsa Code Engine che riceve gli eventi.ibmcloud ce sub kafka create --name mykafkasubscription --destination kafka-receiver-app2 --secret kafka-subscription-secret --topic kafka-topic1 --broker broker-3-abcdabcdabcdabcd.kafka.svc07.us-south.eventstreams.cloud.ibm.com:9093 --broker broker-5-abcdabcdabcdabcd.kafka.svc07.us-south.eventstreams.cloud.ibm.com:9093 --broker broker-0-abcdabcdabcdabcd.kafka.svc07.us-south.eventstreams.cloud.ibm.com:9093 --broker broker-1-abcdabcdabcdabcd.kafka.svc07.us-south.eventstreams.cloud.ibm.com:9093 --broker broker-4-abcdabcdabcdabcd.kafka.svc07.us-south.eventstreams.cloud.ibm.com:9093 --broker broker-2-abcdabcdabcdabcd.kafka.svc07.us-south.eventstreams.cloud.ibm.com:9093 -
Visualizzare i dettagli della sottoscrizione evento Kafka.
ibmcloud ce sub kafka get -n mykafkasubscriptionOutput di esempio
Getting Kafka event subscription 'mykafkasubscription'... OK Name: mykafkasubscription [...] Destination Type: app Destination: kafka-receiver-app2 Brokers: broker-3-abcdabcdabcdabcd.kafka.svc07.us-south.eventstreams.cloud.ibm.com:9093 broker-5-abcdabcdabcdabcd.kafka.svc07.us-south.eventstreams.cloud.ibm.com:9093 broker-0-abcdabcdabcdabcd.kafka.svc07.us-south.eventstreams.cloud.ibm.com:9093 broker-1-abcdabcdabcdabcd.kafka.svc07.us-south.eventstreams.cloud.ibm.com:9093 broker-4-abcdabcdabcdabcd.kafka.svc07.us-south.eventstreams.cloud.ibm.com:9093 broker-2-abcdabcdabcdabcd.kafka.svc07.us-south.eventstreams.cloud.ibm.com:9093 Consumer Group: knative-kafka-source-a4072fe1-1dfa-4470-9d07-bf7a0ff8e340 Topics: kafka-topic1 Secret key reference (user): kafka-subscription-secret.username Secret key reference (password): kafka-subscription-secret.password Ready: true Conditions: Type OK Age Reason ConnectionEstablished true 24s InitialOffsetsCommitted true 24s Ready true 24s Scheduled true 24s SinkProvided true 24s Events: Type Reason Age Source Messages Normal FinalizerUpdate 26s kafkasource-controller Updated "mykafkasubscription" finalizers
Invio di eventi all'applicazione ricevente con la CLI
Ora che è stato creato l'abbonamento all'evento Kafka, che fa riferimento all'applicazione kafka-receiver-app, utilizza l' kafka-sender-app per inviare eventi di messaggio all'applicazione ricevente.
-
Ottenere l'indirizzo URL pubblico dell'applicazione di destinazione,
kafka-sender-apputilizzando il comandoibmcloud ce app getcon l'opzione--output urlper trovare il sito URL dell'applicazione.ibmcloud ce app get -n kafka-sender-app --output urlOutput di esempio
https://kafka-sender-app.abcdabcdabc.us-south.codeengine.appdomain.cloud -
Esegui l'applicazione del produttore eventi Kafka
kafka-sender-appper inviare gli eventi all'applicazione Code Engine di destinazione. Richiamare l'applicazionekafka-sender-appconcurle specificare i valori per l'argomento e il numero di messaggi. Utilizzare l'output del comandoibmcloud ce app getper trovare il sito URL pubblico dell'applicazione. Assicurati di racchiudere il valore tra virgolette per assicurarti che sia trattato come una singola stringa.curl "<public_URL_of_Kafka_sender_app>?topic=<your_topic_name>&num=<number_of_messages_to_produce>"Ad esempio,
curl "https://kafka-sender-app.abcdabcdabc.us-south.codeengine.appdomain.cloud?topic=kafka-topic1&num=1" -
Visualizzare gli eventi nei log. Quando la tua sottoscrizione evento Kafka viene creata con un broker, argomenti e un segreto di accesso validi e hai un'applicazione Kafka che produce messaggi su tale argomento (come
kafka-sender-app), puoi visualizzare gli eventi nei log per la tua applicazione Code Engine di destinazione che riceve i messaggi Kafka, comekafka-receiver-app. Quando utilizzi l'applicazione ricevente Kafka (icr.io/codeengine/kafka-receiver), cercaEvent datanei log per l'applicazione ricevente per vedere i messaggi ricevuti.ibmcloud ce app logs -n kafka-receiver-app2Output di esempio
Getting logs for all instances of application 'kafka-receiver-app2'... OK kafka-receiver-app2-00001-deployment-66976f7988-9xttm/user-container: 2022/03/31 22:19:45 Listening on port 8080 2022/03/31 22:19:46 ---------- 2022/03/31 22:19:46 Path: / 2022/03/31 22:19:46 Header: Accept-Encoding=[gzip] 2022/03/31 22:19:46 Header: Ce-Id=[partition:0/offset:167] 2022/03/31 22:19:46 Header: Ce-Source=[/apis/v1/namespaces/glxo4k7nj7d/kafkasources/mykafkasubscription#kafka-topic1] 2022/03/31 22:19:46 Header: Ce-Specversion=[1.0] 2022/03/31 22:19:46 Header: Ce-Subject=[partition:0#167] 2022/03/31 22:19:46 Header: Ce-Time=[2022-03-31T22:19:36.499Z] 2022/03/31 22:19:46 Header: Ce-Type=[dev.knative.kafka.event] 2022/03/31 22:19:46 Header: Content-Length=[8] 2022/03/31 22:19:46 Header: Forwarded=[for=172.30.208.213;proto=http, for=127.0.0.6] 2022/03/31 22:19:46 Header: K-Proxy-Request=[activator] 2022/03/31 22:19:46 Header: Traceparent=[00-b033708685c715a7c2384cdf05797785-65540b0937e9b0ce-00] 2022/03/31 22:19:46 Header: User-Agent=[Go-http-client/1.1] 2022/03/31 22:19:46 Header: X-B3-Parentspanid=[e1a785d7fdbead6c] 2022/03/31 22:19:46 Header: X-B3-Sampled=[1] 2022/03/31 22:19:46 Header: X-B3-Spanid=[abcde9901e6bf83f] 2022/03/31 22:19:46 Header: X-B3-Traceid=[abcde490a426573772fa0bf60caf5ddb] 2022/03/31 22:19:46 Header: X-Envoy-Attempt-Count=[1] 2022/03/31 22:19:46 Header: X-Forwarded-For=[172.30.208.213, 127.0.0.6, 127.0.0.6] 2022/03/31 22:19:46 Header: X-Forwarded-Proto=[http] 2022/03/31 22:19:46 Header: X-Request-Id=[abcdeb4e-c5ac-abcd-abcd-60e6278abcde] 2022/03/31 22:19:46 Event data: test1: 1Nota che le informazioni di log per le app durano solo un'ora. Per ulteriori informazioni sulla visualizzazione dei log per le applicazioni (o i lavori), vedi Visualizzazione dei log.
Informazioni di intestazione e corpo per eventi Kafka consegnati alle applicazioni
Tutti gli eventi inviati alle applicazioni vengono ricevuti come messaggi POST dell' HTTP. Gli eventi contengono alcune intestazioni HTTP che consentono di individuare rapidamente le informazioni chiave relative agli eventi senza dover esaminare
il corpo (logica di business) dell'evento stesso. Per ulteriori informazioni, consultare CloudEvents spec.
Intestazioni per app
| Intestazione | Descrizione |
|---|---|
ce-id |
Un identificativo univoco per l'evento, a meno che un evento non venga riprodotto, nel qual caso, viene assegnato lo stesso ID. |
ce-source |
Un riferimento URI che indica dove questo evento ha avuto origine dal produttore dell'evento. Per gli eventi Kafka, questa intestazione è nel seguente formato: /apis/v1/namespaces/[PROJECT_SUBDOMAIN]/kafkasources/[KAFKA_SUBSCRIPTION_NAME]#[TOPIC_NAME]. |
ce-specversion |
La versione delle specifiche dell' CloudEvents. Questo valore è sempre 1.0. |
ce-subject |
L'offset e il numero di partizione Kafka. Ad esempio, partition:0#1 fa riferimento alla partizione 0 e all'offset 1. |
ce-time |
L'ora in cui l'evento è stato generato. |
ce-type |
Il tipo di evento. Per gli eventi Kafka, questo è dev.knative.kafka.event. |
Output di esempio
Ce-Id=[partition:0/offset:0]
Ce-Source=[/apis/v1/namespaces/ewgz38l13ts/kafkasources/mykafkasubscription#kafka-topic1]
Ce-Specversion=[1.0]
Ce-Subject=[partition:0#0]
Ce-Time=[2021-09-27T16:39:01.36Z]
Ce-Type=[dev.knative.kafka.event]
HTTP corpo per le applicazioni
Il corpo di HTTP contiene il messaggio Kafka ed è nel formato specificato al momento della creazione o dell'aggiornamento dell'abbonamento.
Configurazione di Code Engine per ricevere eventi Kafka per un lavoro
Affinché Code Engine funzioni con gli eventi Kafka, utilizzare la console o la CLI per configurare un abbonamento agli eventi Code Engine Kafka, in modo da connettersi ai broker di eventi Kafka e ascoltare gli eventi Kafka. Inoltre, configura un processo (o un’app) di “ Code Engine ” che funga da destinatario degli eventi “ Kafka ”. L'abbonamento agli eventi " Kafka " definisce la relazione tra il produttore (mittente) Kafka e il consumatore (destinatario) degli eventi.
Sottoscrizione degli eventi Kafka per un lavoro dalla console
È possibile utilizzare la console per configurare un abbonamento agli eventi di Kafka in modo che gli eventi vengano inviati a un processo di Code Engine.
Quando si crea una sottoscrizione evento per un lavoro, viene creata un'esecuzione lavoro per ogni evento attivato. Questa esecuzione lavoro ha le variabili di ambiente correlate al lavoro. L'abbonamento all'evento " Code Engine " ( Kafka ) si collega al broker di messaggi Kafka e invia le variabili d'ambiente relative al processo. Per ulteriori informazioni sulle variabili d'ambiente inviate da Kafka, consultare la sezione " Variabili d'ambiente per gli eventi ".
Creazione di un lavoro Code Engine per ricevere gli eventi Kafka dalla console
- Crea un lavoro Code Engine per agire come un event consumer di Kafka messaggi e ricevere gli eventi Kafka. Ad esempio, creare un job denominato
kafka-receiver-jobche utilizza l'immagineicr.io/codeengine/codeenginedi esempio. Questa immagine viene creata dacodeengine.go, disponibile da Esempi per il repository IBM Cloud Code Engine GitHub. Questo esempio non richiede alcuna variabile di ambiente. - Dopo aver creato questo lavoro, confermare che si trova nello stato
ready.
Quando si utilizza la console, non è necessario che l'app o il processo utilizzato per ricevere gli eventi " Kafka " esista già prima di creare l'abbonamento all'evento " Kafka ". Tuttavia, se l'app o il lavoro non esiste quando si crea la sottoscrizione evento, lo stato della sottoscrizione indica che l'utente non esiste. Devi creare l'applicazione o il lavoro prima che la sottoscrizione sia in stato pronto e possa ricevere gli eventi tramite questa sottoscrizione.
Creazione di una sottoscrizione evento Code Engine Kafka per un lavoro dalla console
L'abbonamento agli eventi " Kafka " definisce la relazione tra il produttore (mittente) Kafka e il consumatore (destinatario) degli eventi.
Prima di iniziare
- Determinare il progetto Code Engine che si desidera utilizzare e verificare che questo sia selezionato. Vedere Creazione e utilizzo di un progetto.
Completa la seguente procedura per creare una sottoscrizione evento Kafka per un'applicazione dalla console.
- Dalla pagina ProgettiCode Engine, vai al tuo progetto.
- Dalla pagina Panoramica, fare clic su Sottoscrizioni eventi.
- Dalla pagina Sottoscrizioni evento, fare clic su Crea per creare la sottoscrizione.
- Dalla pagina Crea una sottoscrizione evento, selezionare il tile
Event Streams / Kafkaper specificare il tipo di evento. - Per Generale, fornire un nome per la sottoscrizione
Event Streams / Kafka. Fai clic su " Avanti " per continuare. - Per ulteriori informazioni su Message Broker,
- Specificare gli host del broker di messaggi Kafka per le code di messaggi da cui vengono ricevuti i messaggi come eventi tramite questa sottoscrizione. Per ottenere informazioni su host, argomenti e credenziali di accesso del broker,
visualizza i dettagli della credenziale del servizio per la tua istanza del servizio nella console Event Streams. Ad esempio, specificare
"broker-0-abcdabcdabcdabcd.kafka.svc01.us-south.eventstreams.cloud.ibm.com:9093", "broker-1-abcdabcdabcdabcd.kafka.svc01.us-south.eventstreams.cloud.ibm.com:9093"per gli host del broker dei messaggi per l'istanza del serviziomyeventstream-key. - Fare clic su Configura per configurare l'accesso al broker dei messaggi. Per autenticarti da Code Engine alla tua istanza Kafka o Event Streams, devi fornire un segreto di accesso del broker dei messaggi.
- È possibile creare un nuovo segreto, scegliere un segreto esistente oppure, se le credenziali non sono richieste per accedere ai broker dei messaggi, scegliere
None. - Per creare un segreto, fare clic su Crea. Fornire un nome per il segreto e i valori per
usernameepassword. I valori perusernameepassworddevono corrispondere ai valori nelle credenziali del servizio per l'istanza Kafka o Event Streams. Ad esempio, il valore perusernameè il valore diuserelencato nei dettagli delle credenziali del servizio nell'istanza del servizio Event Streams. Il valore perpasswordè quello diapikeyelencato nei dettagli delle credenziali del servizio nell'istanza del servizio Event Streams. - Per questo esempio, utilizzare il segreto
kafka-subscription-secretesistente precedentemente creato.
- È possibile creare un nuovo segreto, scegliere un segreto esistente oppure, se le credenziali non sono richieste per accedere ai broker dei messaggi, scegliere
- Specificare il nome degli argomenti esistenti per le code messaggi. Ad esempio,
kafka-topic1. Per ottenere informazioni sugli argomenti esistenti per la tua istanza del servizio, vai alla tua istanza del servizio nella console Event Streams e visualizza Argomenti. - (Facoltativo) Specificare un gruppo di consumatori. I consumer dei messaggi Kafka possono essere raggruppati in gruppi consumer. Se si utilizzano gruppi di consumatori, la configurazione dell'argomento controlla il flusso di messaggi per i consumatori nel gruppo di consumatori. Ogni volta che un consumer viene aggiunto o rimosso da un gruppo consumer, il flusso di messaggi da tale argomento potrebbe cambiare. Questa azione può far sì che i consumer esistenti non ricevano più messaggi da tale argomento.
- Fai clic su " Avanti " per proseguire.
- Specificare gli host del broker di messaggi Kafka per le code di messaggi da cui vengono ricevuti i messaggi come eventi tramite questa sottoscrizione. Per ottenere informazioni su host, argomenti e credenziali di accesso del broker,
visualizza i dettagli della credenziale del servizio per la tua istanza del servizio nella console Event Streams. Ad esempio, specificare
- Per Consumer eventi, specificare il lavoro Code Engine per ricevere gli eventi. Nota che puoi scegliere da un elenco di lavori e app definiti oppure puoi fornire un nome per un lavoro (o app) che non è ancora stato creato.
Non è necessario che l'app o il lavoro esistano quando crei la sottoscrizione evento con la console. Tuttavia, quando la sottoscrizione viene creata, lo stato della sottoscrizione indica che l'utente non esiste. È necessario creare il
lavoro (o l'app) prima che la sottoscrizione sia in stato pronto e possa ricevere eventi tramite questa sottoscrizione. Per questo esempio, selezionare
jobcome tipo di componente e utilizzare il jobkafka-receiver-jobche fa riferimento all'immagineicr.io/codeengine/codeenginecome componente per ricevere eventi. Se il tuo lavoro non esiste, fornisci il nome del tuo lavoro e crea il tuo lavoro dopo aver creato la sottoscrizione Kafka. Solo per le applicazioni, è possibile specificare facoltativamente un percorso. Fai clic su " Avanti " per continuare. - Per Riepilogo, esamina le impostazioni per la tua sottoscrizione evento Kafka e apporta le modifiche, se necessario. Quando pronto, fai clic su Crea per creare la sottoscrizione Kafka.
Invio di eventi al lavoro di ricezione dalla console
Ora che è stato creato l'abbonamento all'evento Kafka, che fa riferimento al job kafka-receiver-job, utilizza l' kafka-sender-app per inviare eventi di messaggio al job ricevente.
-
Avviare la registrazione per il lavoro destinatario per visualizzare i log del lavoro dalla console per visualizzare gli eventi.
-
(facoltativo) Avviare la registrazione per l'applicazione mittente per visualizzare i log dell'applicazione dalla console per vedere le informazioni sugli eventi inviati.
-
Dopo aver avviato la registrazione, chiamare l'applicazione
kafka-sender-appconcurle specificare l'indirizzo URL pubblico dikafka-sender-app, il nome dell'argomento e il numero di messaggi da inviare. È possibile ottenere il sito URL pubblico di questa applicazione dalla scheda Domain mappings della propria applicazione. Ad esempio,curl "<public_URL_of_Kafka_sender_app>?topic=<your_topic_name>&num=<number_of_messages_to_produce>"
Assicurati di racchiudere il valore tra virgolette per assicurarti che sia trattato come una singola stringa.
Quando la tua sottoscrizione Kafka viene creata con un broker, degli argomenti e un segreto di accesso validi e hai un lavoro Kafka che produce messaggi su tale argomento (come kafka-sender-app), puoi visualizzare gli eventi
nei log per il tuo lavoro Code Engine che riceve i messaggi Kafka, come kafka-receiver-job. Quando si utilizza il lavoro destinatario Kafka (icr.io/codeengine/codeengine), cercare CE_DATA nei log
per il lavoro destinatario per visualizzare i messaggi ricevuti.
Sottoscrizione di eventi Kafka per un lavoro con la CLI
È possibile utilizzare la CLI per configurare un abbonamento agli eventi di Kafka in modo che gli eventi vengano inviati a un’attività di Code Engine.
Quando si crea una sottoscrizione evento per un lavoro, viene creata un'esecuzione lavoro per ogni evento attivato. Questa esecuzione lavoro ha le variabili di ambiente correlate al lavoro. L'abbonamento all'evento " Code Engine " ( Kafka ) si collega al broker di messaggi Kafka e invia le variabili d'ambiente relative al processo. Per ulteriori informazioni sulle variabili d'ambiente inviate da Kafka, consultare la sezione " Variabili d'ambiente per gli eventi ".
Creazione di un lavoro Code Engine per ricevere gli eventi Kafka con la CLI
Prima di iniziare
-
Crea un lavoro Code Engine per agire come un event consumer di Kafka messaggi e ricevere gli eventi Kafka. Ad esempio, crea un lavoro denominato
kafka-receiver-jobche utilizza l'immagineicr.io/codeengine/codeengine. Questa immagine viene creata dacodeengine.go, disponibile da Esempi per il repository IBM Cloud Code Engine GitHub.ibmcloud ce job create -n kafka-receiver-job --image icr.io/codeengine/codeengine -
(Facoltativo) Dopo aver creato questo lavoro, eseguire il comando
job getper visualizzare le informazioni su questo lavoro.ibmcloud ce job get -n kafka-receiver-job
Creazione di una sottoscrizione di evento Code Engine Kafka per un lavoro con la CLI
È possibile creare un abbonamento agli eventi " Kafka ", che definisce la relazione tra il produttore (mittente) Kafka e il consumatore (destinatario) degli eventi, tramite la CLI.
-
Crea una sottoscrizione evento Kafka Code Engine per i tuoi eventi Kafka utilizzando il comando
ibmcloud ce sub kafka create. Utilizzare il segretokafka-subscription-secretprecedentemente creato per accedere al broker dei messaggi. Specifica le informazioni del broker in base alle informazioni delle credenziali del servizio per la tua risorsa Kafka. Per questo esempio, è possibile ottenere le informazioni del broker dall'output del comandoibmcloud resource service-key myeventstream-key. Notare che è necessario specificare un'opzione--brokerper ciascun broker per il proprio argomento. L'opzione--destinationspecifica la risorsa Code Engine che riceve gli eventi. Quando si gestisce un lavoro di ricezione, è necessario specificare anche l'opzione--destination-typeper specificare che la risorsa è un lavoro, poiché il valore predefinito per questa opzione èapp.ibmcloud ce sub kafka create --name mykafkasubscription-withjob --destination-type job --destination kafka-receiver-job --secret kafka-subscription-secret --topic kafka-topic1 --broker broker-3-abcdabcdabcdabcd.kafka.svc07.us-south.eventstreams.cloud.ibm.com:9093 --broker broker-5-abcdabcdabcdabcd.kafka.svc07.us-south.eventstreams.cloud.ibm.com:9093 --broker broker-0-abcdabcdabcdabcd.kafka.svc07.us-south.eventstreams.cloud.ibm.com:9093 --broker broker-1-abcdabcdabcdabcd.kafka.svc07.us-south.eventstreams.cloud.ibm.com:9093 --broker broker-4-abcdabcdabcdabcd.kafka.svc07.us-south.eventstreams.cloud.ibm.com:9093 --broker broker-2-abcdabcdabcdabcd.kafka.svc07.us-south.eventstreams.cloud.ibm.com:9093 -
Visualizzare i dettagli della sottoscrizione evento Kafka.
ibmcloud ce sub kafka get -n mykafkasubscription-withjobOutput di esempio
Getting Kafka event subscription 'mykafkasubscription-withjob'... OK Name: mykafkasubscription-withjob [...] Destination Type: job Destination: kafka-receiver-job Brokers: broker-3-abcdabcdabcdabcd.kafka.svc07.us-south.eventstreams.cloud.ibm.com:9093 broker-5-abcdabcdabcdabcd.kafka.svc07.us-south.eventstreams.cloud.ibm.com:9093 broker-0-abcdabcdabcdabcd.kafka.svc07.us-south.eventstreams.cloud.ibm.com:9093 broker-1-abcdabcdabcdabcd.kafka.svc07.us-south.eventstreams.cloud.ibm.com:9093 broker-4-abcdabcdabcdabcd.kafka.svc07.us-south.eventstreams.cloud.ibm.com:9093 broker-2-abcdabcdabcdabcd.kafka.svc07.us-south.eventstreams.cloud.ibm.com:9093 Consumer Group: knative-kafka-source-a4072fe1-1dfa-4470-9d07-bf7a0ff8e340 Topics: kafka-topic1 Secret key reference (user): kafka-subscription-secret.username Secret key reference (password): kafka-subscription-secret.password Ready: true [...]
Invio di eventi al lavoro di ricezione con la CLI
Ora che è stato creato l'abbonamento all'evento Kafka, che fa riferimento all'applicazione kafka-receiver-job, utilizza l' kafka-sender-app per inviare eventi di messaggio all'applicazione ricevente.
-
Ottenere l'indirizzo URL pubblico dell'applicazione di destinazione,
kafka-sender-app, utilizzando il comandoibmcloud ce app getper trovare il sito URL dell'applicazione.ibmcloud ce app get -n kafka-sender-app --output urlOutput di esempio
https://kafka-sender-app.abcdabcdabc.us-south.codeengine.appdomain.cloud -
Esegui l'applicazione event - producer Kafka
kafka-sender-appper inviare gli eventi al lavoro Code Engine di destinazione. Richiamare l'applicazionekafka-sender-appconcurle specificare i valori per l'argomento e il numero di messaggi. Utilizzare l'output del comandoibmcloud ce app getper trovare il sito URL pubblico dell'applicazione che produce eventi. Assicurati di racchiudere il valore tra virgolette per assicurarti che sia trattato come una singola stringa. Ad esempio,curl "<public_URL_of_Kafka_sender_app>?topic=<your_topic_name>&num=<number_of_messages_to_produce>"Ad esempio,
curl "https://kafka-sender-app.abcdabcdabc.us-south.codeengine.appdomain.cloud?topic=kafka-topic1&num=1" -
Visualizzare gli eventi nei log. Quando la tua sottoscrizione evento Kafka viene creata con un broker, argomenti e un segreto di accesso validi e hai un'applicazione Kafka che produce messaggi su tale argomento (come
kafka-sender-app), puoi visualizzare gli eventi nei log per il tuo lavoro Code Engine di destinazione che riceve messaggi Kafka, comekafka-receiver-job. Per ogni messaggio inviato utilizzandocurl, lo stesso numero di esecuzioni di lavori viene attivato dagli eventi Kafka. Per visualizzare gli eventi inviati ai lavori, utilizzare il comandoibmcloud ce jobrun logs.- Utilizzare il comando
ibmcloud ce jobrun listper elencare le esecuzioni del lavorokafka-receiver-job.
ibmcloud ce jobrun list --job kafka-receiver-job ``` 2. Utilizzare il comando **`ibmcloud ce jobrun logs`** per ottenere i log per un'esecuzione lavoro specifica. ```txt {: pre} ibmcloud ce jobrun logs -n kafka-receiver-job-abcde ``` Output di esempio ```txt {: screen} Getting logs for all instances of job run 'kafka-receiver-job-abcde'... Getting jobrun 'kafka-receiver-job-abcde'... Getting instances of jobrun 'kafka-receiver-job-abcde'... OK kafka-receiver-job-abcde-0-0/kafka-receiver-job: Hello from helloworld! I'm a batch job! Index: 0 Hello World from: . ___ __ ____ ____ ./ __)/ \( \( __) ( (__( O )) D ( ) _) .\___)\__/(____/(____) .____ __ _ ___ __ __ _ ____ ( __)( ( \ / __)( )( ( \( __) .) _) / /( (_ \ )( / / ) _) (____)\_)__) \___/(__)\_)__)(____) Some Env Vars: -------------- CE_DATA=test1: 2 CE_DOMAIN=us-south.codeengine.appdomain.cloud CE_ID=partition:0/offset:249 CE_JOB=kafka-receiver-job CE_JOBRUN=kafka-receiver-job-abcde CE_SOURCE=/apis/v1/namespaces/p99k7iy919d/kafkasources/kafkasub-job-ui#kafka-topic1 CE_SPECVERSION=1.0 CE_SUBDOMAIN=p99k7iy919d CE_SUBJECT=partition:0#249 CE_TIME=2022-06-21T12:19:24.06Z CE_TYPE=dev.knative.kafka.event HOME=/root HOSTNAME=kafka-receiver-job-abcde-0-0 JOB_INDEX=0 KUBERNETES_PORT=tcp://172.21.0.1:443 KUBERNETES_PORT_443_TCP=tcp://172.21.0.1:443 KUBERNETES_PORT_443_TCP_ADDR=172.21.0.1 KUBERNETES_PORT_443_TCP_PORT=443 KUBERNETES_PORT_443_TCP_PROTO=tcp KUBERNETES_SERVICE_HOST=172.21.0.1 KUBERNETES_SERVICE_PORT=443 KUBERNETES_SERVICE_PORT_HTTPS=443 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin PWD=/ SHLVL=1 z=Set env var 'SHOW' to see all variables ``` Quando si utilizza il lavoro destinatario Kafka (`icr.io/codeengine/codeengine`), cercare `CE_DATA` nei log per il lavoro destinatario per visualizzare i messaggi ricevuti. Tenere presente che le informazioni di log per le esecuzioni del lavoro durano solo un'ora. Per ulteriori informazioni sulla visualizzazione dei log per applicazioni o lavori, vedi [Visualizzazione dei log](/docs/codeengine?topic=codeengine-logging). - Utilizzare il comando
Variabili di ambiente per eventi Kafka consegnati ai lavori
Tutti gli eventi consegnati a un lavoro vengono ricevuti come variabili di ambiente. Tali variabili di ambiente includono un prefisso CE_ e si basano sulla CloudEvents spec.
Ogni evento contiene alcune variabili di ambiente comuni che vengono visualizzate ogni volta che l'evento viene consegnato a un lavoro. L'insieme effettivo di variabili in ogni evento può includere più opzioni. Per ulteriori informazioni,
consultare Attributi CloudEvent.
La seguente tabella descrive le variabili di ambiente specifiche degli eventi Kafka.
| Variabile | Descrizione |
|---|---|
CE_DATA |
I dati (corpo) per l'evento. |
CE_DOMAIN |
La parte del nome di dominio di URL dell'applicazione (e del progetto). |
CE_ID |
Un identificativo univoco per l'evento, a meno che un evento non venga riprodotto, nel qual caso, viene assegnato lo stesso ID. |
CE_SOURCE |
Un riferimento URI che indica dove questo evento ha avuto origine dal produttore dell'evento. Per gli eventi Kafka, questa intestazione è nel seguente formato: /apis/v1/namespaces/[PROJECT_SUBDOMAIN]/kafkasources/kafkasub#[TOPIC_NAME]. |
CE_SPECVERSION |
La versione delle specifiche dell' CloudEvents. Questo valore è sempre 1.0. |
CE_SUBDOMAIN |
La porzione di sottodominio di URL associata all'applicazione (e al progetto). Se si ha familiarità con Kubernetes, CE_SUBDOMAIN corrisponde allo spazio dei nomi Kubernetes associato al progetto. |
CE_SUBJECT |
L'offset e il numero di partizione Kafka. Ad esempio, partition:0#1 fa riferimento alla partizione 0 e all'offset 1. |
CE_TIME |
L'ora in cui l'evento è stato generato. |
CE_TYPE |
Il tipo di evento. Per gli eventi Kafka, questo è dev.knative.kafka.event. |
Output di esempio
CE_DATA={"message":"This is a test message #","message_number":1}
CE_DOMAIN=us-south.codeengine.appdomain.cloud
CE_ID=partition:0/offset:46
CE_SOURCE=/apis/v1/namespaces/ewgz38l13ts/kafkasources/mykafkasubscription-job#kafka-topic1
CE_SPECVERSION=1.0
CE_SUBDOMAIN=ewgz38l13ts
CE_SUBJECT=partition:0#46
CE_TIME=2021-09-27T18:02:17.7Z
CE_TYPE=dev.knative.kafka.event
Visualizzazione e aggiornamento delle sottoscrizioni eventi Kafka
È possibile visualizzare i dettagli relativi all'abbonamento all'evento " Kafka " oppure aggiornare l'abbonamento.
Visualizzazione e aggiornamento delle sottoscrizioni evento Kafka dalla console
-
Per visualizzare le informazioni sulle sottoscrizioni degli eventi
- Dalla pagina ProgettiCode Engine, vai al tuo progetto.
- Dalla pagina Panoramica, fare clic su Sottoscrizioni evento per visualizzare un elenco di richieste definite.
-
Per aggiornare una sottoscrizione evento
- Vai alla pagina del tuo abbonamento. Per passare alla pagina Sottoscrizioni, andare alla pagina Sottoscrizioni evento e fare clic sul nome della sottoscrizione che si desidera aggiornare.
- Aggiornare la sottoscrizione. Ad esempio, modifica l'argomento per una sottoscrizione Kafka in un argomento differente. Dalla scheda Dettagli broker messaggi, rimuovere l'argomento esistente dalla sezione Argomenti e aggiungere il nome del nuovo argomento.
- Fai clic su Save per salvare le modifiche.
Visualizzazione e aggiornamento delle sottoscrizioni evento Kafka con la CLI
-
Per visualizzare le informazioni sulle tue sottoscrizioni evento con la CLI, utilizza il comando
ibmcloud ce subscription kafka get.ibmcloud ce sub kafka get -n mykafkasubscriptionOutput di esempio
Getting Kafka event subscription 'mykafkasubscription'... OK Name: mykafkasubscription ID: abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f Project Name: myproject Project ID: 01234567-abcd-abcd-abcd-abcdabcd1111 Age: 2m4s Created: 2022-06-18T16:59:12-04:00 Destination Type: app Destination: kafka-receiver-app2 Brokers: broker-3-abcdabcdabcdabcd.kafka.svc07.us-south.eventstreams.cloud.ibm.com:9093 broker-5-abcdabcdabcdabcd.kafka.svc07.us-south.eventstreams.cloud.ibm.com:9093 broker-0-abcdabcdabcdabcd.kafka.svc07.us-south.eventstreams.cloud.ibm.com:9093 broker-0-abcdabcdabcdabcd.kafka.svc07.us-south.eventstreams.cloud.ibm.com:9093 broker-4-abcdabcdabcdabcd.kafka.svc07.us-south.eventstreams.cloud.ibm.com:9093 broker-0-abcdabcdabcdabcd.kafka.svc07.us-south.eventstreams.cloud.ibm.com:9093 Consumer Group: knative-kafka-source-c577b304-dccd-40c8-bb62-138c39f6112a Topics: kafka-topic1 Secret key reference (user): kafka-subscription-secret.username Secret key reference (password): kafka-subscription-secret.password Ready: true Conditions: Type OK Age Reason ConnectionEstablished true 53m InitialOffsetsCommitted true 53m Ready true 52m Scheduled true 52m SinkProvided true 53m Events: Type Reason Age Source Messages Normal FinalizerUpdate 53m kafkasource-controller Updated "mykafkasubscription" finalizers -
Per aggiornare una sottoscrizione evento con la CLI, utilizza il comando
ibmcloud ce subscription kafka update. Il seguente esempio aggiorna il nome dell'argomento.ibmcloud ce sub kafka update -n mykafkasubscription --topic kafka-topic2È possibile utilizzare il
ibmcloud ce subscription kafka updateper aggiornare i valori relativi all'abbonamento Kafka. Tuttavia, non è possibile modificare il valore per il gruppo di consumatori con questo comando. Se desideri aggiornare la sottoscrizione per farvi riferimento a un argomento diverso, assicurati che l'argomento Kafka esista prima di aggiornare la sottoscrizione.
Eliminazione di una sottoscrizione evento Kafka
Quando non ti serve più l'abbonamento a Kafka, puoi cancellarlo.
Quando si elimina un abbonamento, le credenziali del servizio relative all'istanza del servizio " Event Streams " vengono utilizzate per rimuovere i gruppi di consumatori dall'istanza del servizio " Event Streams ". Se le credenziali del servizio sono già state eliminate o non sono valide al momento dell'eliminazione dell'abbonamento, i gruppi di consumatori non possono essere rimossi dall'istanza del servizio " Event Streams ". La richiesta di cancellazione dell'abbonamento all'evento " Code Engine " ( Kafka ) non va a buon fine.
Eliminazione di una sottoscrizione Kafka dalla console
- Dalla pagina ProgettiCode Engine, vai al tuo progetto.
- Dalla pagina Panoramica, fare clic su Sottoscrizioni evento per visualizzare un elenco di richieste definite.
- Dall'elenco di sottoscrizioni, eliminare la sottoscrizione che si desidera rimuovere dall'applicazione o dal lavoro.
Se si elimina un'app o un lavoro associato alla sottoscrizione, la sottoscrizione non viene eliminata. Se si ricrea l'applicazione o il lavoro (o un'altra applicazione o lavoro con lo stesso nome), la sottoscrizione si riconnette con l'applicazione o il lavoro.
Eliminazione di una sottoscrizione Kafka con la CLI
Puoi eliminare una sottoscrizione Kafka eseguendo il comando ibmcloud ce subscription kafka delete.
Ad esempio, utilizza il seguente comando per eliminare una sottoscrizione Kafka denominata mykafkasubscription,
ibmcloud ce subscription kafka delete --name mykafkasubscription
Se si elimina un'app o un lavoro associato alla sottoscrizione, la sottoscrizione non viene eliminata. Invece, passa allo stato pronto di false perché la sottoscrizione dipende dalla disponibilità dell'applicazione o del lavoro.
Se crei di nuovo l'applicazione o il lavoro (o un'altra applicazione o lavoro con lo stesso nome), la tua sottoscrizione si riconnette e lo stato Pronto è true.
Definizione di attributi evento aggiuntivi
Quando si crea una sottoscrizione, è possibile definire ulteriori attributi CloudEvent da includere in qualsiasi evento generato. Questi attributi sono simili a qualsiasi altro attributo CloudEvent nella consegna dell'evento.
Se si sceglie di specificare il nome di un attributo CloudEvent esistente, sovrascrive il valore originale incluso nell'evento.
Per definire gli attributi di aggiunta, utilizzare le opzioni --extension con il comando CLI ibmcloud ce subscription kafka create.
Per ulteriori informazioni, vedi Posso utilizzare altre specifiche CloudEvents ?