Trabajar con el productor de eventos Kafka
Una suscripción de Code Engine Kafka observa si aparecen nuevos mensajes en una instancia de Kafka. Cuando crea una suscripción para un conjunto de temas, la app o el trabajo recibe un suceso independiente para cada nuevo mensaje que aparece en uno de los temas. Puede crear un máximo de 100 suscripciones Kafka por proyecto.
Aunque puede utilizar cualquier instancia de Kafka, los ejemplos de este tema utilizan el servicio IBM® Event Streams for IBM Cloud®. Event Streams es un servicio de streaming de sucesos de IBM para sucesos de Kafka. Para obtener más información sobre este servicio, consulte la documentación deEvent Streams.
Configuración del productor de eventos Kafka
Puede configurar el productor de mensajes Kafka para enviar mensajes a las suscripciones de sucesos de Code Engine Kafka. Utilice la suscripción de suceso Code Engine Kafka para desencadenar aplicaciones o trabajos cuando se reciba un mensaje Kafka.
Para empezar, cree una instancia de servicio de Event Streams para el servicio de streaming de sucesos. Aunque puede utilizar la consola o la CLI, los pasos siguientes describen cómo configurar el generador de sucesos de Event Streams con la CLI.
Configuración del entorno CLI de Event Streams
-
Descargue e instale la CLI de IBM Cloud. Inicie una sesión en la CLI de IBM Cloud.
ibmcloud login
-
Descargue e instale la CLI de Code Engine.
ibmcloud plugin install code-engine -f
-
Para utilizar el servicio Event Streams para crear la instancia de Kafka, descargue e instale la CLI deEvent Streams.
ibmcloud plugin install event-streams -f
-
Inicie sesión en su cuenta de IBM Cloud y seleccione como destino un grupo de recursos. Puede establecer como destino un grupo de recursos ejecutando el mandato siguiente. Para obtener una lista de tus grupos de recursos, ejecuta el comando '
ibmcloud resource groups
'.ibmcloud target -g <resource_group>
Configuración de su instancia de Kafka
-
Cree una instancia de servicio para Event Streams. El nombre del servicio CLI Event Streams es
messagehub
. Para este ejemplo, cree una instancia de servicio de Event Streams denominadamyeventstream
.ibmcloud resource service-instance-create myeventstream messagehub lite us-south
-
Cree una clave de servicio para proporcionar credenciales a la instancia de servicio.
ibmcloud resource service-key-create myeventstream-key Manager --instance-name myeventstream
Salida de ejemplo
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: token
Anote los valores de
user
,password
ykafka-brokers_sasl
para la clave de servicio. Necesita esta información cuando configura la suscripción de Code Engine Kafka. Los valores depassword
yapikey
son los mismos en la clave de servicio para la instancia de servicio de Event Streams. También puede utilizar el mandatoibmcloud resource service-key myeventstream-key
para recuperar la información de clave de servicio. -
Inicialice el plugin Event Streams relativo a la instancia de servicio de Event Streams.
ibmcloud es init --instance-name myeventstream
-
Crea un tema Event Streams.
ibmcloud es topic-create kafka-topic1
Configuración de una app de ejemplo Code Engine para generar mensajes Kafka
Para este escenario, vamos a utilizar una aplicación Code Engine para actuar como productor de sucesos de mensajes Kafka. La finalidad de esta aplicación es conectarse a la instancia de Event Streams y enviar mensajes Kafka. Esta aplicación
utiliza la aplicación de ejemplo de remitente deCode Engine Kafka para enviar mensajes Kafka. Esta imagen de remitente de ejemplo requiere la
variable de entorno BROKERS
y un secreto que incluya las credenciales de password
. Puede crear esta aplicación desde la consola o con la CLI.
Asegúrese de especificar la cabecera Content-Type
cuando genere mensajes de Kafka en Event Streams. Especifique esta cabecera para que el consumidor pueda recibir mensajes con el tipo de contenido esperado; por ejemplo, application/json
.
Creación de un secreto con las credenciales necesarias para los ejemplos de Kafka
Antes de crear la aplicación Code Engine para enviar mensajes Kafka, cree un secreto Code Engine que contenga las credenciales necesarias.
Antes de empezar
- Determine el proyecto Code Engine que desea utilizar y asegúrese de que este proyecto esté seleccionado. Consulte Crear y trabajar con un proyecto.
Para mayor simplicidad en este escenario, cree un secreto, kafka-subscription-secret
, que contenga las credenciales necesarias para la app de ejemplo del remitente Kafka y la suscripción de sucesos Kafka, que utiliza el ejemplo
del destinatario Kafka. Estas credenciales son necesarias para la app de remitente Kafka de ejemplo y la suscripción de suceso Code Engine Kafka para comunicarse con la instancia de servicio para Event Streams. Aunque no es necesario que
cree este secreto antes de crear la app del remitente Kafka y la suscripción de sucesos, esta acción simplifica los pasos necesarios.
Creación de un secreto con las credenciales necesarias para los ejemplos de Kafka desde la consola
Para crear el secreto de kafka-subscription-secret
desde la consola, vaya a Secretos y mapas de configuración y pulse Crear y seleccione el secreto que desea crear. Para obtener más información,
consulte crear un secreto desde la consola.
- Especifique la clave
username
con el valor deuser
que se lista en los detalles de las credenciales de servicio en la instancia de servicio de Event Streams. Para la instancia de servicio de Event Streams, este valor estoken
. Esta clave es necesaria para la autenticación entre la suscripción de sucesos Code Engine Kafka y el intermediario de mensajes Kafka. - Especifique la clave
password
con el valor deapikey
que se lista en los detalles de las credenciales de servicio en la instancia de servicio de Event Streams. Esta clave es necesaria para el ejemplo del remitente y para habilitar las comunicaciones entre la suscripción de sucesos Code Engine Kafka y el intermediario de mensajes Kafka.
Creación de un secreto con las credenciales necesarias para los ejemplos de Kafka con la CLI
Para crear el secreto de kafka-subscription-secret
con la CLI, añada una variable de entorno literal para password
y username
. Para obtener más información, consulte crear un secreto con la CLI.
-
Especifique la clave
username
con el valor deuser
que se lista en los detalles de las credenciales de servicio en la instancia de servicio de Event Streams. Para la instancia de servicio de Event Streams, este valor estoken
. Esta clave es necesaria para la autenticación entre la suscripción de sucesos Code Engine Kafka y el intermediario de mensajes Kafka. -
Especifique la clave
password
con el valor deapikey
que se lista en los detalles de las credenciales de servicio en la instancia de servicio de Event Streams. Esta clave es necesaria para el ejemplo del remitente y para habilitar las comunicaciones entre la suscripción de sucesos Code Engine Kafka y el intermediario de mensajes Kafka.ibmcloud ce secret create --name kafka-subscription-secret --from-literal password=<value_of_apikey> --from-literal username=<value_of_user>
Por ejemplo:
ibmcloud ce secret create --name kafka-subscription-secret --from-literal password=abcdeH9tu3qE5Sn8VbJfcDEWtjR_l0iPisB3abcdefgh --from-literal username=token
Creación de una aplicación Code Engine para enviar sucesos
Cree una app Code Engine para conectarse a la instancia de Event Streams y generar (enviar) mensajes Kafka a un receptor de mensajes Kafka (consumidorKafka ).
Creación de una aplicación Code Engine para enviar sucesos desde la consola
Para crear la aplicación ' kafka-sender-app
' desde la consola, sigue los siguientes pasos.
-
Cree una aplicación Code Engine denominada
kafka-sender-app
con la siguiente información.- Haga referencia a la imagen de contenedor de
icr.io/codeengine/kafka-sender
para esta app. Esta imagen se crea a partir desender.go
, que está disponible en el GitHub de Samples for IBM Cloud Code Engine. Esta aplicación de remitente de ejemplo requiere valores parapassword
yBROKERS
. - En la sección Variables de entorno (opcional), añada las variables de entorno siguientes.
- Añada una variable de entorno literal,
BROKERS
. Para el valor de esta clave, especifique uno o más de los hosts de intermediario que se listan en los detalles de las credenciales de servicio en la instancia de servicio de Event Streams. - Añada otra variable de entorno para hacer referencia al secreto completo,
kafka-subscription-secret
. Este secreto contiene las credenciales parapassword
.
- Añada una variable de entorno literal,
- (opcional) En la sección Recursos y escalado, especifique
1
para el número mínimo de instancias para que la app siempre tenga una instancia que se esté ejecutando y no se escale a cero. La configuración de la app para que siempre haya una instancia de ejecución es útil cuando se ven los registros. Si está ejecutando en un entorno de producción, tenga en cuenta el coste de mantener una instancia en ejecución de la app o si desea que Code Engine se escale automáticamente a cero. De forma predeterminada, la aplicación se escala a cero cuando no se utiliza. - Pulse Crear para crear y desplegar la app.
- Haga referencia a la imagen de contenedor de
-
Confirme que esta aplicación está en estado
ready
.
Creación de una app Code Engine para enviar sucesos con la CLI
Para crear la aplicación kafka-sender-app
con la CLI, utilice los mandatos siguientes.
-
Cree una aplicación Code Engine denominada
kafka-sender-app
con la siguiente información.- Especifique la opción
--image
para hacer referencia a la imagen de contenedoricr.io/codeengine/kafka-sender
. Esta imagen se crea a partir desender.go
, que está disponible en el GitHub de Samples for IBM Cloud Code Engine. Esta app de remitente de ejemplo requiere las credenciales depassword
que están almacenadas enkafka-subscription-secret
y requiere la variable de entornoBROKERS
. - Especifique la opción
--env-from-secret
para hacer referencia al secreto completo,kafka-subscription-secret
, que contiene las credenciales depassword
. - Especifique la opción
--env
para añadir una variable de entorno literal,BROKERS
, y proporcione el nombre de uno de los hosts de intermediario que se listan en los detalles de las credenciales de servicio en la instancia de servicio de Event Streams. Sin embargo, si desea especificar más de un nombre de host de intermediario, utilice el formato--env BROKERS-broker1,broker2,broker3
. - (opcional) Especifica la opción '
--min-scale=1
' para que la aplicación siempre tenga una instancia en ejecución y no escale a cero. La configuración de la app para que siempre haya una instancia de ejecución es útil cuando se ven los registros. Si está ejecutando en un entorno de producción, tenga en cuenta el coste de mantener una instancia en ejecución de la app o si desea que Code Engine se escale automáticamente a cero. De forma predeterminada, la aplicación se escala a cero cuando no se utiliza.
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
- Especifique la opción
Configuración de Code Engine para recibir sucesos de Kafka para una app
Para que Code Engine funcione con sucesos de Kafka, utilice la consola o CLI para configurar una suscripción de sucesos de Code Engine Kafka para conectarse a intermediarios de sucesos de Kafka y escuchar sucesos de Kafka. Además, configure una aplicación (o trabajo) Code Engine para que actúe como receptor de los sucesos de Kafka. La suscripción de sucesos de Kafka define la relación entre el productor (remitente) y el consumidor (destinatario) de sucesos de Kafka.
La suscripción de suceso Code Engine Kafka se conecta al intermediario de mensajes Kafka y envía solicitudes HTTP Post para cada mensaje Kafka entrante a la aplicación receptora. Para obtener más información, consulte cabeceras HTTP e información de cuerpo para sucesos.
Suscripción a eventos Kafka para una aplicación desde la consola
Puede utilizar la consola para configurar una suscripción de sucesos de Kafka para que los sucesos se envíen a una aplicación Code Engine.
Creación de una aplicación Code Engine para recibir sucesos de Kafka desde la consola
- Cree una aplicación Code Engine para que actúe como consumidor de sucesos de los mensajes Kafka y reciba los sucesos Kafka. Por ejemplo, cree
una aplicación denominada
kafka-receiver-app
que utilice la imagenicr.io/codeengine/kafka-receiver
. Esta imagen se crea a partir dereceiver.go
, que está disponible en el GitHub de Samples for IBM Cloud Code Engine. Este ejemplo no requiere ninguna variable de entorno. - Después de desplegar esta app, confirme que está en estado
ready
.
Cuando utilice la consola, no es necesario que la app o el trabajo que utilice para recibir sucesos de Kafka existan antes de crear la suscripción de sucesos de Kafka. Sin embargo, si la aplicación o el trabajo no existen al crear la suscripción de suceso, el estado de la suscripción refleja que el consumidor no existe. Debe crear la aplicación o el trabajo antes de que la suscripción esté en un estado preparado y pueda recibir sucesos a través de esta suscripción.
Creación de una suscripción de suceso de Code Engine Kafka para una app desde la consola
La suscripción de sucesos de Kafka define la relación entre el productor (remitente) y el consumidor (destinatario) de sucesos de Kafka.
Antes de empezar
- Determine el proyecto Code Engine que desea utilizar y asegúrese de que este proyecto esté seleccionado. Consulte Crear y trabajar con un proyecto.
Complete los siguientes pasos para crear una suscripción a eventos Kafka para una aplicación desde la consola.
- Desde la Code Engine Proyectos, vaya a su proyecto.
- En la página Visión general, pulse Suscripciones de sucesos.
- En la página Suscripciones de sucesos, pulse Crear para crear la suscripción.
- En la página Crear una suscripción de suceso, seleccione el mosaico
Event Streams / Kafka
para especificar el tipo de suceso. - Para General, proporcione un nombre para la suscripción de
Event Streams / Kafka
. Pulse Siguiente para continuar. - Para más información sobre el agente de mensajes,
- Especifique los hosts del agente de mensajes Kafka para las colas de mensajes de las que se reciben mensajes como eventos a través de esta suscripción. Para obtener información sobre los hosts de intermediario, temas y credenciales
de acceso, consulte los detalles de credenciales de servicio para la instancia de servicio en la consola de Event Streams. Por ejemplo, especifique
"broker-0-abcdabcdabcdabcd.kafka.svc01.us-south.eventstreams.cloud.ibm.com:9093", "broker-1-abcdabcdabcdabcd.kafka.svc01.us-south.eventstreams.cloud.ibm.com:9093"
para los hosts de intermediario de mensajes para la instancia de servicio demyeventstream-key
. Puede encontrar los intermediarios para la instancia de servicio en Event Streams en el campoKafka_brokers_sasl
. - Pulse Configurar para configurar el acceso al intermediario de mensajes. Para autenticarse desde Code Engine en la instancia de Kafka o Event Streams, debe proporcionar un secreto de acceso de intermediario de mensajes.
- Puede crear un nuevo secreto, elegir un secreto existente o, si no son necesarias las credenciales para acceder a los intermediarios de mensajes, elegir
None
. - Para crear un secreto, pulse Crear. Proporcione un nombre para el secreto y valores para
username
ypassword
. Los valores deusername
ypassword
deben coincidir con los valores de las credenciales de servicio para la instancia de Kafka o Event Streams. Por ejemplo, el valor deusername
es el valor deuser
que se lista en los detalles de las credenciales de servicio en la instancia de servicio de Event Streams. El valor depassword
es el valor deapikey
que se lista en los detalles de las credenciales de servicio en la instancia de servicio de Event Streams. - Para este ejemplo, utilice el secreto
kafka-subscription-secret
existente que se ha creado anteriormente.
- Puede crear un nuevo secreto, elegir un secreto existente o, si no son necesarias las credenciales para acceder a los intermediarios de mensajes, elegir
- Especifique el nombre de los temas existentes para las colas de mensajes. Por ejemplo,
kafka-topic1
. Para obtener información sobre los temas existentes para la instancia de servicio, vaya a la instancia de servicio en la consola de Event Streams y consulte Temas. - (Opcional) Especifique un grupo de consumidores. Los consumidores de mensajes Kafka se pueden agrupar en grupos de consumidores. Si utiliza grupos de consumidores, la configuración del tema controla el flujo de mensajes a los consumidores del grupo de consumidores. Siempre que se añade o se elimina un consumidor de un grupo de consumidores, el flujo de mensajes de ese tema puede cambiar. Esta acción puede hacer que los consumidores existentes ya no reciban mensajes de ese tema.
- Pulse Siguiente para continuar.
- Especifique los hosts del agente de mensajes Kafka para las colas de mensajes de las que se reciben mensajes como eventos a través de esta suscripción. Para obtener información sobre los hosts de intermediario, temas y credenciales
de acceso, consulte los detalles de credenciales de servicio para la instancia de servicio en la consola de Event Streams. Por ejemplo, especifique
- Para Consumidor de eventos, especifique la aplicación Code Engine que recibirá los eventos. Tenga en cuenta que puede elegir entre una lista de aplicaciones y trabajos definidos, o puede proporcionar un nombre para una
aplicación (o trabajo) que todavía no se ha creado. No es necesario que la aplicación o el trabajo existan al crear la suscripción de sucesos con la consola. Sin embargo, cuando se crea la suscripción, el estado de la suscripción refleja
que el consumidor no existe. Debe crear la aplicación o el trabajo antes de que la suscripción esté en un estado preparado y pueda recibir sucesos a través de esta suscripción. Para este ejemplo, utilice la aplicación
kafka-receiver-app
que hace referencia a la imagenicr.io/codeengine/kafka-receiver
. Si la app no existe, proporcione el nombre de la aplicación y cree la aplicación después de crear la suscripción de Kafka. Solo para las aplicaciones, puede especificar opcionalmente una vía de acceso. De forma predeterminada, los sucesos se direccionan al URL raíz de la aplicación de destino. Puede enviar sucesos a un destino diferente dentro de la app especificando una vía de acceso. Por ejemplo, si la vía de acceso de suscripción especifica/events
, los sucesos se envían ahttps://<base application URL>/events
. Pulse Siguiente para continuar. - En Resumen, revise la configuración de su suscripción a eventos Kafka y realice los cambios necesarios. Cuando esté listo, haga clic en Crear para crear la suscripción Kafka.
Envío de sucesos a la aplicación receptora desde la consola
Ahora que se ha creado la suscripción de sucesos de Kafka, que hace referencia a la aplicación kafka-receiver-app
, utilice kafka-sender-app
para enviar sucesos de mensaje a la aplicación receptora.
-
Inicie el registro de la aplicación receptora para ver los registros de la aplicación desde la consola para ver los sucesos.
-
(facultativo) Inicie el registro de la aplicación del remitente para ver los registros de la aplicación desde la consola para ver información sobre los sucesos que se envían.
-
Después de iniciar el registro, llame a la aplicación
kafka-sender-app
concurl
y especifique el URL público dekafka-sender-app
, el nombre del tema y el número de mensajes que se deben enviar. Puede obtener el URL público de esta aplicación desde la pestaña Correlaciones de dominio de la aplicación. Por ejemplo:curl "<public_URL_of_Kafka_sender_app>?topic=<your_topic_name>&num=<number_of_messages_to_produce>"
Asegúrese de ajustar el valor a curl entre comillas para asegurarse de que se trata como una sola serie.
Suscripción a eventos de Kafka para una aplicación con la CLI
Puede utilizar la CLI para configurar una suscripción de sucesos de Kafka para que los sucesos se envíen a una aplicación Code Engine.
Los sucesos se envían a las aplicaciones como solicitudes HTTP POST. Para obtener más información sobre la información que se incluye con los eventos Kafka, consulte Cabeceras HTTP e información del cuerpo de los eventos. Si el suceso se envía a un trabajo Code Engine, el trabajo recibe sucesos como variables de entorno. Para obtener más información sobre las variables de entorno para suscripciones de Kafka, consulte Variables de entorno para sucesos.
Creación de una app Code Engine para recibir sucesos de Kafka con la CLI
Antes de empezar
-
Cree una aplicación Code Engine para que actúe como consumidor de sucesos de los mensajes Kafka y reciba los sucesos Kafka. Por ejemplo, cree una aplicación denominada
kafka-receiver-app2
que utilice la imagenicr.io/codeengine/kafka-receiver
. Esta imagen se crea a partir dereceiver.go
, que está disponible en el GitHub de Samples for IBM Cloud Code Engine. Este ejemplo no requiere ninguna variable de entorno. Puede especificar opcionalmente la opción "--min-scale=1
", de forma que la aplicación siempre tenga una instancia en ejecución y no se escale a cero. La configuración de la app para que siempre haya una instancia de ejecución es útil cuando se ven los registros. Si está ejecutando en un entorno de producción, tenga en cuenta el coste de mantener una instancia en ejecución de la app o si desea que Code Engine se escale automáticamente a cero. De forma predeterminada, la aplicación se escala a cero cuando no se utiliza.ibmcloud ce app create -n kafka-receiver-app2 --image icr.io/codeengine/kafka-receiver --min-scale 1
De forma predeterminada, los sucesos se direccionan al URL raíz de la aplicación de destino. Puede enviar sucesos a un destino diferente dentro de la app utilizando la opción
--path
. Por ejemplo, si la suscripción indica--path /event
, el suceso se envía ahttps://<base application URL>/events
. -
Después de desplegar esta app, ejecute el mandato
app get
para confirmar que la app está en estadoready
.ibmcloud ce app get -n kafka-receiver-app2
Creación de una suscripción de suceso de Code Engine Kafka para una app con la CLI
Puede crear una suscripción de sucesos de Kafka, que define la relación entre el productor (remitente) y el consumidor (destinatario) de sucesos de Kafka, con la CLI.
-
Cree una suscripción de suceso de Code Engine Kafka para los sucesos de Kafka utilizando el mandato
ibmcloud ce sub kafka create
. Utilice el secreto dekafka-subscription-secret
que ha creado anteriormente para acceder al intermediario de mensajes. Especifique la información de intermediario basada en la información de credenciales de servicio para el recurso Kafka. Para este ejemplo, puede obtener la información de intermediario de la salida del mandatoibmcloud resource service-key myeventstream-key
. Tenga en cuenta que debe especificar una opción--broker
para cada intermediario del tema. La opción--destination
especifica el recurso Code Engine que recibe los sucesos.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
-
Muestra los detalles de la suscripción a eventos Kafka.
ibmcloud ce sub kafka get -n mykafkasubscription
Salida de ejemplo
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
Envío de sucesos a la app receptora con la CLI
Ahora que se ha creado la suscripción de sucesos de Kafka, que hace referencia a la aplicación kafka-receiver-app
, utilice kafka-sender-app
para enviar sucesos de mensaje a la aplicación receptora.
-
Obtenga el URL público de la app de destino,
kafka-sender-app
utilizando el mandatoibmcloud ce app get
con la opción--output url
para buscar el URL de la app.ibmcloud ce app get -n kafka-sender-app --output url
Salida de ejemplo
https://kafka-sender-app.abcdabcdabc.us-south.codeengine.appdomain.cloud
-
Ejecute la aplicación de generador de sucesos Kafka,
kafka-sender-app
para enviar sucesos a la aplicación Code Engine de destino. Llame a la aplicaciónkafka-sender-app
concurl
y especifique valores para el tema y el número de mensajes. Utiliza la salida del comando 'ibmcloud ce app get
' para encontrar la URL pública de tu aplicación. Asegúrese de ajustar el valor a curl entre comillas para asegurarse de que se trata como una sola serie.curl "<public_URL_of_Kafka_sender_app>?topic=<your_topic_name>&num=<number_of_messages_to_produce>"
Por ejemplo:
curl "https://kafka-sender-app.abcdabcdabc.us-south.codeengine.appdomain.cloud?topic=kafka-topic1&num=1"
-
Ver sucesos en registros. Cuando se crea la suscripción de sucesos de Kafka con un intermediario, temas y un secreto de acceso que son válidos, y tiene una aplicación Kafka que genera mensajes sobre ese tema (como
kafka-sender-app
), puede ver sucesos en los registros para la aplicación Code Engine de destino que recibe mensajes Kafka, comokafka-receiver-app
. Cuando utilice la aplicación receptora Kafka (icr.io/codeengine/kafka-receiver
), busqueEvent data
en los registros de la aplicación receptora para ver los mensajes recibidos.ibmcloud ce app logs -n kafka-receiver-app2
Salida de ejemplo
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: 1
Ten en cuenta que la información de registro de las aplicaciones sólo dura una hora. Para obtener más información sobre la visualización de registros para apps (o trabajos), consulte Visualización de registros.
Información de cabecera y cuerpo para sucesos de Kafka que se entregan a apps
Todos los sucesos que se entregan a aplicaciones se reciben como mensajes HTTP POST. Los sucesos contienen determinadas cabeceras HTTP que le ayudan a determinar rápidamente los bits clave de información sobre los sucesos sin mirar el cuerpo
(lógica empresarial) del suceso. For more information, see the CloudEvents
spec.
Cabeceras para aplicaciones
Cabecera | Descripción |
---|---|
ce-id |
Un identificador exclusivo para el suceso, a menos que se vuelva a reproducir un suceso, en cuyo caso se le asigna el mismo ID. |
ce-source |
Una referencia de URI que indica dónde se ha originado este suceso en el generador de sucesos. Para sucesos de Kafka, esta cabecera tiene el formato siguiente: /apis/v1/namespaces/[PROJECT_SUBDOMAIN]/kafkasources/[KAFKA_SUBSCRIPTION_NAME]#[TOPIC_NAME] . |
ce-specversion |
La versión de la especificación de CloudEvents . Este valor siempre es 1.0 . |
ce-subject |
El número de partición y el desplazamiento de Kafka. Por ejemplo, partition:0#1 hace referencia a la partición 0 y el desplazamiento 1 . |
ce-time |
La hora a la que se ha generado el suceso. |
ce-type |
El tipo del suceso. Para sucesos de Kafka, es dev.knative.kafka.event . |
Salida de ejemplo
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]
Cuerpo HTTP para apps
El cuerpo HTTP contiene el mensaje Kafka y está en el formato que se especifica al crear o actualizar la suscripción.
Configuración de Code Engine para recibir sucesos de Kafka para un trabajo
Para que Code Engine funcione con sucesos de Kafka, utilice la consola o CLI para configurar una suscripción de sucesos de Code Engine Kafka para conectarse a intermediarios de sucesos de Kafka y escuchar sucesos de Kafka. Además, configure un trabajo Code Engine (o app) para que actúe como receptor de los sucesos de Kafka. La suscripción de sucesos de Kafka define la relación entre el productor (remitente) y el consumidor (destinatario) de sucesos de Kafka.
Suscripción a eventos Kafka para un trabajo desde la consola
Puede utilizar la consola para configurar una suscripción de sucesos de Kafka para que los sucesos se envíen a un trabajo Code Engine.
Cuando crea una suscripción de suceso para un trabajo, se crea una ejecución de trabajo para cada suceso que se desencadena. Esta ejecución de trabajo tiene las variables de entorno relacionadas con el trabajo. La suscripción de sucesos de Code Engine Kafka se conecta al intermediario de mensajes Kafka y envía variables de entorno relacionadas con el trabajo. Para obtener más información sobre las variables de entorno que envía Kafka, consulte Variables de entorno para eventos.
Creación de un trabajo Code Engine para recibir sucesos de Kafka desde la consola
- Cree un trabajo Code Engine para actuar como consumidor de sucesos de los mensajes Kafka y recibir los sucesos Kafka. Por ejemplo, cree un trabajo llamado "
kafka-receiver-job
" que utilice la imagen de ejemplo "icr.io/codeengine/codeengine
. Esta imagen está construida a partir de 'codeengine.go
, disponible en Samples for IBM Cloud Code Engine Repositorio de GitHub. Este ejemplo no requiere ninguna variable de entorno. - Después de crear este trabajo, confirme que está en estado
ready
.
Cuando utilice la consola, no es necesario que la app o el trabajo que utilice para recibir sucesos de Kafka existan antes de crear la suscripción de sucesos de Kafka. Sin embargo, si la aplicación o el trabajo no existen al crear la suscripción de suceso, el estado de la suscripción refleja que el consumidor no existe. Debe crear la aplicación o el trabajo antes de que la suscripción esté en un estado preparado y pueda recibir sucesos a través de esta suscripción.
Creación de una suscripción de suceso de Code Engine Kafka para un trabajo desde la consola
La suscripción de sucesos de Kafka define la relación entre el productor (remitente) y el consumidor (destinatario) de sucesos de Kafka.
Antes de empezar
- Determine el proyecto Code Engine que desea utilizar y asegúrese de que este proyecto esté seleccionado. Consulte Crear y trabajar con un proyecto.
Complete los siguientes pasos para crear una suscripción a eventos Kafka para una aplicación desde la consola.
- Desde la Code Engine Proyectos, vaya a su proyecto.
- En la página Visión general, pulse Suscripciones de sucesos.
- En la página Suscripciones de sucesos, pulse Crear para crear la suscripción.
- En la página Crear una suscripción de suceso, seleccione el mosaico
Event Streams / Kafka
para especificar el tipo de suceso. - Para General, proporcione un nombre para la suscripción de
Event Streams / Kafka
. Pulse Siguiente para continuar. - Para más información sobre el agente de mensajes,
- Especifique los hosts del agente de mensajes Kafka para las colas de mensajes de las que se reciben mensajes como eventos a través de esta suscripción. Para obtener información sobre los hosts de intermediario, temas y credenciales
de acceso, consulte los detalles de credenciales de servicio para la instancia de servicio en la consola de Event Streams. Por ejemplo, especifique
"broker-0-abcdabcdabcdabcd.kafka.svc01.us-south.eventstreams.cloud.ibm.com:9093", "broker-1-abcdabcdabcdabcd.kafka.svc01.us-south.eventstreams.cloud.ibm.com:9093"
para los hosts de intermediario de mensajes para la instancia de servicio demyeventstream-key
. - Pulse Configurar para configurar el acceso al intermediario de mensajes. Para autenticarse desde Code Engine en la instancia de Kafka o Event Streams, debe proporcionar un secreto de acceso de intermediario de mensajes.
- Puede crear un nuevo secreto, elegir un secreto existente o, si no son necesarias las credenciales para acceder a los intermediarios de mensajes, elegir
None
. - Para crear un secreto, pulse Crear. Proporcione un nombre para el secreto y valores para
username
ypassword
. Los valores deusername
ypassword
deben coincidir con los valores de las credenciales de servicio para la instancia de Kafka o Event Streams. Por ejemplo, el valor deusername
es el valor deuser
que se lista en los detalles de las credenciales de servicio en la instancia de servicio de Event Streams. El valor depassword
es el valor deapikey
que se lista en los detalles de las credenciales de servicio en la instancia de servicio de Event Streams. - Para este ejemplo, utilice el secreto
kafka-subscription-secret
existente que se ha creado anteriormente.
- Puede crear un nuevo secreto, elegir un secreto existente o, si no son necesarias las credenciales para acceder a los intermediarios de mensajes, elegir
- Especifique el nombre de los temas existentes para las colas de mensajes. Por ejemplo,
kafka-topic1
. Para obtener información sobre los temas existentes para la instancia de servicio, vaya a la instancia de servicio en la consola de Event Streams y consulte Temas. - (Opcional) Especifique un grupo de consumidores. Los consumidores de mensajes Kafka se pueden agrupar en grupos de consumidores. Si utiliza grupos de consumidores, la configuración del tema controla el flujo de mensajes a los consumidores del grupo de consumidores. Siempre que se añade o se elimina un consumidor de un grupo de consumidores, el flujo de mensajes de ese tema puede cambiar. Esta acción puede hacer que los consumidores existentes ya no reciban mensajes de ese tema.
- Pulse Siguiente para continuar.
- Especifique los hosts del agente de mensajes Kafka para las colas de mensajes de las que se reciben mensajes como eventos a través de esta suscripción. Para obtener información sobre los hosts de intermediario, temas y credenciales
de acceso, consulte los detalles de credenciales de servicio para la instancia de servicio en la consola de Event Streams. Por ejemplo, especifique
- Para el consumidor de eventos, especifique el trabajo Code Engine para recibir eventos. Tenga en cuenta que puede elegir entre una lista de trabajos y aplicaciones definidos, o puede proporcionar un nombre para un trabajo
(o aplicación) que todavía no se ha creado. No es necesario que la aplicación o el trabajo existan al crear la suscripción de sucesos con la consola. Sin embargo, cuando se crea la suscripción, el estado de la suscripción refleja que
el consumidor no existe. Debe crear el trabajo (o aplicación) antes de que la suscripción esté en un estado preparado y pueda recibir sucesos a través de esta suscripción. Para este ejemplo, seleccione
job
como tipo de componente y utilice el trabajokafka-receiver-job
que hace referencia a la imagenicr.io/codeengine/codeengine
como componente para recibir sucesos. Si su trabajo no existe, proporcione el nombre de su trabajo y cree su trabajo después de crear la suscripción de Kafka. Solo para las aplicaciones, puede especificar opcionalmente una vía de acceso. Pulse Siguiente para continuar. - En Resumen, revise la configuración de su suscripción a eventos Kafka y realice los cambios necesarios. Cuando esté listo, haga clic en Crear para crear la suscripción Kafka.
Envío de sucesos al trabajo receptor desde la consola
Ahora que se ha creado la suscripción de sucesos de Kafka, que hace referencia al trabajo kafka-receiver-job
, utilice kafka-sender-app
para enviar sucesos de mensaje al trabajo receptor.
-
Inicie el registro del trabajo receptor para ver los registros de trabajo de la consola para ver los sucesos.
-
(facultativo) Inicie el registro de la aplicación del remitente para ver los registros de la aplicación desde la consola para ver información sobre los sucesos que se envían.
-
Después de iniciar el registro, llame a la aplicación
kafka-sender-app
concurl
y especifique el URL público dekafka-sender-app
, el nombre del tema y el número de mensajes que se deben enviar. Puede obtener el URL público de esta aplicación desde la pestaña Correlaciones de dominio de la aplicación. Por ejemplo:curl "<public_URL_of_Kafka_sender_app>?topic=<your_topic_name>&num=<number_of_messages_to_produce>"
Asegúrese de ajustar el valor a curl entre comillas para asegurarse de que se trata como una sola serie.
Cuando se crea la suscripción de Kafka con un intermediario, temas y un secreto de acceso que son válidos, y tiene un trabajo Kafka que genera mensajes sobre ese tema (como por ejemplo kafka-sender-app
), puede ver sucesos en
registros para el trabajo Code Engine que recibe mensajes Kafka, como por ejemplo kafka-receiver-job
. Cuando utilice el trabajo receptor Kafka (icr.io/codeengine/codeengine
), busque CE_DATA
en los
registros del trabajo receptor para ver los mensajes recibidos.
Suscripción a eventos de Kafka para un trabajo con la CLI
Puede utilizar la CLI para configurar una suscripción de suceso Kafka para que los sucesos se envíen a un trabajo Code Engine.
Cuando crea una suscripción de suceso para un trabajo, se crea una ejecución de trabajo para cada suceso que se desencadena. Esta ejecución de trabajo tiene las variables de entorno relacionadas con el trabajo. La suscripción de sucesos de Code Engine Kafka se conecta al intermediario de mensajes Kafka y envía variables de entorno relacionadas con el trabajo. Para obtener más información sobre las variables de entorno que envía Kafka, consulte Variables de entorno para eventos.
Creación de un trabajo Code Engine para recibir sucesos de Kafka con la CLI
Antes de empezar
-
Cree un trabajo Code Engine para actuar como consumidor de sucesos de los mensajes Kafka y recibir los sucesos Kafka. Por ejemplo, cree un trabajo denominado
kafka-receiver-job
que utilice la imagenicr.io/codeengine/codeengine
. Esta imagen está construida a partir de 'codeengine.go
, disponible en Samples for IBM Cloud Code Engine Repositorio de GitHub.ibmcloud ce job create -n kafka-receiver-job --image icr.io/codeengine/codeengine
-
(opcional) Después de crear este trabajo, ejecute el mandato
job get
para ver información sobre este trabajo.ibmcloud ce job get -n kafka-receiver-job
Creación de una suscripción de suceso de Code Engine Kafka para un trabajo con la CLI
Puede crear una suscripción de sucesos de Kafka, que define la relación entre el productor (remitente) y el consumidor (destinatario) de sucesos de Kafka, con la CLI.
-
Cree una suscripción de suceso de Code Engine Kafka para los sucesos de Kafka utilizando el mandato
ibmcloud ce sub kafka create
. Utilice el secreto dekafka-subscription-secret
que ha creado anteriormente para acceder al intermediario de mensajes. Especifique la información de intermediario basada en la información de credenciales de servicio para el recurso Kafka. Para este ejemplo, puede obtener la información de intermediario de la salida del mandatoibmcloud resource service-key myeventstream-key
. Tenga en cuenta que debe especificar una opción--broker
para cada intermediario del tema. La opción--destination
especifica el recurso Code Engine que recibe los sucesos. Cuando trabaja con un trabajo receptor, también debe especificar la opción--destination-type
para especificar que el recurso es un trabajo, ya que el valor predeterminado para esta opción esapp
.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
-
Muestra los detalles de la suscripción a eventos Kafka.
ibmcloud ce sub kafka get -n mykafkasubscription-withjob
Salida de ejemplo
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 [...]
Envío de sucesos al trabajo receptor con la CLI
Ahora que se ha creado la suscripción de sucesos de Kafka, que hace referencia a la aplicación kafka-receiver-job
, utilice kafka-sender-app
para enviar sucesos de mensaje a la aplicación receptora.
-
Obtenga el URL público de la app de destino,
kafka-sender-app
utilizando el mandatoibmcloud ce app get
para buscar el URL de la app.ibmcloud ce app get -n kafka-sender-app --output url
Salida de ejemplo
https://kafka-sender-app.abcdabcdabc.us-south.codeengine.appdomain.cloud
-
Ejecute la aplicación de generador de sucesos Kafka,
kafka-sender-app
para enviar sucesos al trabajo Code Engine de destino. Llame a la aplicaciónkafka-sender-app
concurl
y especifique valores para el tema y el número de mensajes. Utilice la salida del mandatoibmcloud ce app get
para buscar el URL público de la app de producción de sucesos. Asegúrese de ajustar el valor a curl entre comillas para asegurarse de que se trata como una sola serie. Por ejemplo:curl "<public_URL_of_Kafka_sender_app>?topic=<your_topic_name>&num=<number_of_messages_to_produce>"
Por ejemplo:
curl "https://kafka-sender-app.abcdabcdabc.us-south.codeengine.appdomain.cloud?topic=kafka-topic1&num=1"
-
Ver sucesos en registros. Cuando se crea la suscripción de sucesos de Kafka con un intermediario, temas y un secreto de acceso que son válidos, y tiene una app Kafka que genera mensajes sobre ese tema (como por ejemplo
kafka-sender-app
), puede ver sucesos en los registros para el trabajo Code Engine de destino que recibe mensajes Kafka, como por ejemplokafka-receiver-job
. Para cada mensaje que se envía utilizandocurl
, los sucesos de Kafka desencadenan el mismo número de ejecuciones de trabajo. Para ver los sucesos enviados a los trabajos, utilice el mandatoibmcloud ce jobrun logs
.-
Utilice el mandato
ibmcloud ce jobrun list
para listar las ejecuciones de trabajo para el trabajokafka-receiver-job
.ibmcloud ce jobrun list --job kafka-receiver-job
-
Utilice el mandato
ibmcloud ce jobrun logs
para obtener los registros de una ejecución de trabajo específica.ibmcloud ce jobrun logs -n kafka-receiver-job-abcde
Salida de ejemplo
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
Cuando utilice el trabajo receptor Kafka (
icr.io/codeengine/codeengine
), busqueCE_DATA
en los registros del trabajo receptor para ver los mensajes recibidos.Tenga en cuenta que la información de registro de las ejecuciones de trabajo sólo dura una hora. Para obtener más información sobre la visualización de registros para apps o trabajos, consulte Visualización de registros.
-
Variables de entorno para los eventos Kafka que se envían a los trabajos
Todos los sucesos que se entregan a un trabajo se reciben como variables de entorno. These environment variables include a prefix of CE_
and are based on the CloudEvents
spec.
Cada suceso contiene algunas variables de entorno comunes que aparecen cada vez que se entrega el suceso a un trabajo. El conjunto real de variables en cada suceso puede incluir más opciones. Para más información, consulte el " atributos CloudEvent
" .
La siguiente tabla describe las variables de entorno específicas de los eventos Kafka.
Variable | Descripción |
---|---|
CE_DATA |
Los datos (cuerpo) para el suceso. |
CE_DOMAIN |
La parte de nombre de dominio del URL de la aplicación (y proyecto). |
CE_ID |
Un identificador exclusivo para el suceso, a menos que se vuelva a reproducir un suceso, en cuyo caso se le asigna el mismo ID. |
CE_SOURCE |
Una referencia de URI que indica dónde se ha originado este suceso en el generador de sucesos. Para sucesos de Kafka, esta cabecera tiene el formato siguiente: /apis/v1/namespaces/[PROJECT_SUBDOMAIN]/kafkasources/kafkasub#[TOPIC_NAME] . |
CE_SPECVERSION |
La versión de la especificación de CloudEvents . Este valor siempre es 1.0 . |
CE_SUBDOMAIN |
La parte de subdominio del URL asociada a la aplicación (y el proyecto). Si está familiarizado con Kubernetes, CE_SUBDOMAIN se correlaciona con el espacio de nombres de Kubernetes asociado al proyecto. |
CE_SUBJECT |
El número de partición y el desplazamiento de Kafka. Por ejemplo, partition:0#1 hace referencia a la partición 0 y el desplazamiento 1 . |
CE_TIME |
La hora a la que se ha generado el suceso. |
CE_TYPE |
El tipo del suceso. Para sucesos de Kafka, es dev.knative.kafka.event . |
Salida de ejemplo
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
Visualización y actualización de suscripciones de sucesos de Kafka
Puede ver detalles sobre la suscripción de sucesos de Kafka o actualizar la suscripción.
Visualización y actualización de suscripciones de sucesos de Kafka desde la consola
-
Para ver información sobre sus suscripciones a eventos
- Desde la Code Engine Proyectos, vaya a su proyecto.
- En la página Visión general, pulse Suscripciones de sucesos para ver una lista de suscripciones definidas.
-
Para actualizar una suscripción a un evento
- Vaya a su página de suscripción. Para ir a la página de suscripción, vaya a la página Suscripciones de sucesos y pulse el nombre de la suscripción que desea actualizar.
- Actualice la suscripción. Por ejemplo, cambie el tema para una suscripción Kafka a un tema diferente. En el separador Detalles del intermediario de mensajes, elimine el tema existente de la sección Temas y añada el nombre del tema nuevo.
- Pulse Guardar para guardar los cambios.
Visualización y actualización de suscripciones de sucesos de Kafka con la CLI
-
Para ver información sobre las suscripciones de sucesos con la CLI, utilice el mandato
ibmcloud ce subscription kafka get
.ibmcloud ce sub kafka get -n mykafkasubscription
Salida de ejemplo
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
-
Para actualizar una suscripción de suceso con la CLI, utilice el mandato
ibmcloud ce subscription kafka update
. El ejemplo siguiente actualiza el nombre del tema.ibmcloud ce sub kafka update -n mykafkasubscription --topic kafka-topic2
Puede utilizar el mandato
ibmcloud ce subscription kafka update
para actualizar los valores de la suscripción Kafka. Sin embargo, no puede modificar el valor del grupo de consumidores con este mandato. Si desea actualizar la suscripción para que haga referencia a un tema diferente, asegúrese de que el tema Kafka existe antes de actualizar la suscripción.
Supresión de una suscripción de suceso de Kafka
Cuando ya no necesite una suscripción a Kafka, puede eliminarla.
Cuando suprime una suscripción, las credenciales de servicio para la instancia de servicio Event Streams se utilizan para eliminar grupos de consumidores de la instancia de servicio Event Streams. Si la credencial de servicio ya se ha suprimido o si no es válida al suprimir la suscripción, los grupos de consumidores no se pueden eliminar de la instancia de servicio de Event Streams. La solicitud de supresión de suscripción de suceso de Code Engine Kafka falla.
Eliminación de una suscripción Kafka desde la consola
- Desde la Code Engine Proyectos, vaya a su proyecto.
- En la página Visión general, pulse Suscripciones de sucesos para ver una lista de suscripciones definidas.
- En la lista de suscripciones, suprima la suscripción que desea eliminar de la aplicación o del trabajo.
Si suprime una aplicación o un trabajo asociado a la suscripción, la suscripción no se suprime. Si vuelve a crear la aplicación o el trabajo (u otra aplicación o trabajo con el mismo nombre), la suscripción se vuelve a conectar a la aplicación o trabajo.
Eliminación de una suscripción Kafka con la CLI
Puede eliminar una suscripción Kafka ejecutando el comando ' ibmcloud ce subscription kafka delete
'.
Por ejemplo, utilice el siguiente comando para eliminar una suscripción de Kafka llamada " mykafkasubscription
,
ibmcloud ce subscription kafka delete --name mykafkasubscription
Si suprime una aplicación o un trabajo asociado a la suscripción, la suscripción no se suprime. En vez de eso, pasa a estado preparado de false
porque la suscripción depende de la disponibilidad de la aplicación o trabajo. Si
vuelve a crear la aplicación o el trabajo (u otra aplicación o trabajo con el mismo nombre), la suscripción se vuelve a conectar y el estado Preparado es true
.
Definición de atributos de suceso adicionales
Cuando cree una suscripción, puede definir atributos adicionales de CloudEvent
para que se incluyan en cualquier suceso que se genere. Estos atributos aparecen de forma similar a cualquier otro atributo CloudEvent
en
la entrega del suceso. Si elige especificar el nombre de un atributo CloudEvent
existente, prevalece sobre el valor original incluido en el suceso.
Para definir atributos de adición, utilice las opciones " --extension
" con el comando CLI " ibmcloud ce subscription kafka create
".
Para obtener más información, consulte ¿Puedo utilizar otras especificaciones de CloudEvents
?