Colaboración con la productora de eventos « Kafka »
Una suscripción de tipo « Code Engine » ( Kafka ) supervisa la aparición de 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. Puedes crear un máximo de 100 suscripciones a « Kafka » por proyecto.
Aunque puedes 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 transmisión de eventos de IBM para eventos de Kafka. Para obtener más información sobre este servicio, consulta la documentación de Event Streams.
Configuración del generador de eventos « Kafka »
Puedes configurar tu generador de mensajes de Kafka para que envíe mensajes a las suscripciones a eventos Code Engine y Kafka. Utiliza tu suscripción al evento « Code Engine » ( Kafka ) para activar aplicaciones o tareas cuando se reciba un mensaje de « 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 tu 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 myeventstreamSalida 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: tokenAnote los valores de
user,passwordykafka-brokers_saslpara la clave de servicio. Necesita esta información cuando configura la suscripción de Code Engine Kafka. Los valores depasswordyapikeyson 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-keypara 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 en « 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. Puedes crear esta aplicación desde la consola o mediante la CLI.
Asegúrate de especificar el encabezado « Content-Type » cuando envíes mensajes de « Kafka » a 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 simplificar este escenario, crea un secreto, kafka-subscription-secret, que contenga las credenciales necesarias tanto para la aplicación de ejemplo del remitente Kafka como para la suscripción a eventos Kafka, que utiliza
la aplicación de ejemplo del receptor Kafka. Estas credenciales son necesarias para que la aplicación de envío de ejemplo Kafka y la suscripción al evento Code Engine Kafka puedan comunicarse con la instancia del servicio Event Streams.
Aunque no es obligatorio crear este secreto antes de crear la aplicación de envío de Kafka y la suscripción al evento, 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
usernamecon el valor deuserque 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
passwordcon el valor deapikeyque 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
usernamecon el valor deuserque 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
passwordcon el valor deapikeyque 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
Crea una aplicación « Code Engine » para conectarte a tu instancia de Event Streams y generar (enviar) mensajes Kafka a un destinatario de mensajes Kafka (consumidor Kafka ).
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 estos pasos.
-
Cree una aplicación Code Engine denominada
kafka-sender-appcon la siguiente información.- Haga referencia a la imagen de contenedor de
icr.io/codeengine/kafka-senderpara 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 parapasswordyBROKERS. - 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
1para 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-appcon la siguiente información.- Especifique la opción
--imagepara 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 depasswordque están almacenadas enkafka-subscription-secrety requiere la variable de entornoBROKERS. - Especifique la opción
--env-from-secretpara hacer referencia al secreto completo,kafka-subscription-secret, que contiene las credenciales depassword. - Especifique la opción
--envpara 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 tenga siempre una instancia en ejecución y no se reduzca 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 eventos de « Kafka », utiliza la consola o la CLI para configurar una suscripción a eventos de « Code Engine » Kafka que se conecte a los intermediarios de eventos de « Kafka » y escuche los eventos de « Kafka ». Además, configura una aplicación (o tarea) de « Code Engine » para que actúe como receptor de los eventos « Kafka ». La suscripción a eventos de « Kafka » define la relación entre el productor (remitente) y el consumidor (destinatario) de eventos de « Kafka ».
La suscripción a eventos Code Engine Kafka se conecta a su corredor de mensajes Kafka y envía HTTP Post requests 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.
Suscribirse a eventos de « Kafka » para una aplicación desde la consola
Puedes utilizar la consola para configurar una suscripción a eventos de Kafka, de modo que los eventos se envíen a una aplicación de 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-appque 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.
Al utilizar la consola, no es necesario que la aplicación o el trabajo que se utiliza para recibir eventos de « Kafka » ya exista antes de crear la suscripción al evento « 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 a eventos de « Kafka » define la relación entre el productor (remitente) y el consumidor (destinatario) de eventos 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.
Sigue los siguientes pasos para crear una suscripción a eventos de « Kafka » para una aplicación desde la consola.
- Desde la página «Proyectos» de Code Engine, accede a tu 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 / Kafkapara especificar el tipo de suceso. - Para General, proporcione un nombre para la suscripción de
Event Streams / Kafka. Pulse Siguiente para continuar. - Para obtener más información sobre Message Broker,
- Especifica los servidores del agente de mensajes « Kafka » correspondientes a las colas de mensajes desde las que se reciben los 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
usernameypassword. Los valores deusernameypassworddeben coincidir con los valores de las credenciales de servicio para la instancia de Kafka o Event Streams. Por ejemplo, el valor deusernamees el valor deuserque se lista en los detalles de las credenciales de servicio en la instancia de servicio de Event Streams. El valor depasswordes el valor deapikeyque 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-secretexistente 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.
- Especifica los servidores del agente de mensajes « Kafka » correspondientes a las colas de mensajes desde las que se reciben los 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
- En el caso del consumidor de eventos, especifica la aplicación Code Engine para recibir 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-appque 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, revisa la configuración de tu suscripción a eventos de « Kafka » y realiza los cambios necesarios, si procede. Cuando estés listo, haz clic en «Crear» para crear la suscripción a « Kafka ».
Envío de sucesos a la aplicación receptora desde la consola
Ahora que ya has creado tu suscripción a eventos Kafka, que hace referencia a la aplicación kafka-receiver-app, utiliza kafka-sender-app para enviar eventos de mensajes 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.
-
Una vez iniciado el registro, llame a la aplicación
kafka-sender-appconcurly especifique el URL público delkafka-sender-app, el nombre de su tema y el número de mensajes a enviar. Puede obtener la dirección pública URL de esta aplicación en la pestaña Domain mappings de su 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.
Suscribirse a eventos de « Kafka » para una aplicación mediante la CLI
Puedes utilizar la CLI para configurar una suscripción a eventos de Kafka, de modo que los eventos se envíen a una aplicación de Code Engine.
Los sucesos se envían a las aplicaciones como solicitudes HTTP POST. Para obtener más información sobre los datos que se incluyen en los eventos de « Kafka », consulta la información sobre los encabezados y el cuerpo de los eventos de « HTTP ». Si tu evento se envía a un trabajo de « Code Engine », dicho trabajo recibe los eventos como variables de entorno. Para obtener más información sobre las variables de entorno de las suscripciones a « Kafka », consulta « Variables de entorno para eventos ».
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-app2que 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. Si lo deseas, puedes especificar la opción «--min-scale=1», de modo que la aplicación siempre tenga una instancia en ejecución y no se reduzca 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 1De 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 getpara 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
Puedes crear una suscripción a eventos de Kafka —que define la relación entre el productor (remitente) y el consumidor (destinatario) de eventos de Kafka — mediante 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-secretque 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--brokerpara cada intermediario del tema. La opción--destinationespecifica 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 -
Mostrar los detalles de la suscripción al evento « Kafka ».
ibmcloud ce sub kafka get -n mykafkasubscriptionSalida 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 ya has creado tu suscripción a eventos Kafka, que hace referencia a la aplicación kafka-receiver-app, utiliza kafka-sender-app para enviar eventos de mensajes a la aplicación receptora.
-
Obtener la URL pública de la aplicación de destino,
kafka-sender-appmediante el uso deibmcloud ce app getComando con el--output urlOpción para encontrar la URL de tu aplicación.ibmcloud ce app get -n kafka-sender-app --output urlSalida de ejemplo
https://kafka-sender-app.abcdabcdabc.us-south.codeengine.appdomain.cloud -
Ejecute la aplicación de generador de sucesos Kafka,
kafka-sender-apppara enviar sucesos a la aplicación Code Engine de destino. Llame a la aplicaciónkafka-sender-appconcurly especifique valores para el tema y el número de mensajes. Utiliza el resultado delibmcloud ce app getcomando para encontrar el URL público 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 dataen los registros de la aplicación receptora para ver los mensajes recibidos.ibmcloud ce app logs -n kafka-receiver-app2Salida 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: 1Ten en cuenta que la información de registro de las aplicaciones solo se conserva durante 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. Para obtener más información, consulta la especificación « CloudEvents ».
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]
HTTP cuerpo para aplicaciones
El cuerpo del mensaje « HTTP » contiene el mensaje « Kafka » y tiene 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 eventos de « Kafka », utiliza la consola o la CLI para configurar una suscripción a eventos de « Code Engine » Kafka que se conecte a los intermediarios de eventos de « Kafka » y escuche los eventos de « Kafka ». Además, configura una tarea (o aplicación) de « Code Engine » para que actúe como receptor de los eventos « Kafka ». La suscripción a eventos de « Kafka » define la relación entre el productor (remitente) y el consumidor (destinatario) de eventos de « Kafka ».
Suscribirse a eventos de « Kafka » para un trabajo desde la consola
Puedes utilizar la consola para configurar una suscripción a eventos de Kafka, de modo que los eventos se envíen a una tarea de 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 al evento « Code Engine » ( Kafka ) se conecta a tu agente de mensajes Kafka y envía las variables de entorno relacionadas con el trabajo. Para obtener más información sobre las variables de entorno que envía Kafka, consulta « 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, crea una tarea llamada «
kafka-receiver-job» que utilice la imagen de ejemplo «icr.io/codeengine/codeengine». Esta imagen se ha creado a partir decodeengine.go, disponible en el repositorio «Samples for IBM Cloud Code Engine »(GitHub). Este ejemplo no requiere ninguna variable de entorno. - Después de crear este trabajo, confirme que está en estado
ready.
Al utilizar la consola, no es necesario que la aplicación o el trabajo que se utiliza para recibir eventos de « Kafka » ya exista antes de crear la suscripción al evento « 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 a eventos de « Kafka » define la relación entre el productor (remitente) y el consumidor (destinatario) de eventos 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.
Sigue los siguientes pasos para crear una suscripción a eventos de « Kafka » para una aplicación desde la consola.
- Desde la página «Proyectos» de Code Engine, accede a tu 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 / Kafkapara especificar el tipo de suceso. - Para General, proporcione un nombre para la suscripción de
Event Streams / Kafka. Pulse Siguiente para continuar. - Para obtener más información sobre Message Broker,
- Especifica los servidores del agente de mensajes « Kafka » correspondientes a las colas de mensajes desde las que se reciben los 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
usernameypassword. Los valores deusernameypassworddeben coincidir con los valores de las credenciales de servicio para la instancia de Kafka o Event Streams. Por ejemplo, el valor deusernamees el valor deuserque se lista en los detalles de las credenciales de servicio en la instancia de servicio de Event Streams. El valor depasswordes el valor deapikeyque 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-secretexistente 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.
- Especifica los servidores del agente de mensajes « Kafka » correspondientes a las colas de mensajes desde las que se reciben los 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
- En el caso del consumidor de eventos, especifica 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
jobcomo tipo de componente y utilice el trabajokafka-receiver-jobque hace referencia a la imagenicr.io/codeengine/codeenginecomo componente para recibir sucesos. Si tu trabajo aún no existe, indica el nombre del mismo y créalo una vez que hayas creado la suscripción a « Kafka ». Solo para las aplicaciones, puede especificar opcionalmente una vía de acceso. Pulse Siguiente para continuar. - En resumen, revisa la configuración de tu suscripción a eventos de « Kafka » y realiza los cambios necesarios, si procede. Cuando estés listo, haz clic en «Crear» para crear la suscripción a « Kafka ».
Envío de sucesos al trabajo receptor desde la consola
Ahora que ya has creado tu suscripción al evento « Kafka », que hace referencia al trabajo « kafka-receiver-job », utiliza el « kafka-sender-app » para enviar eventos de mensajes 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.
-
Una vez iniciado el registro, llame a la aplicación
kafka-sender-appconcurly especifique el URL público delkafka-sender-app, el nombre de su tema y el número de mensajes a enviar. Puede obtener la dirección pública URL de esta aplicación en la pestaña Domain mappings de su 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.
Suscribirse a eventos de « Kafka » para un trabajo con la CLI
Puedes utilizar la CLI para configurar una suscripción a eventos de Kafka, de modo que los eventos se envíen a una tarea de 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 al evento « Code Engine » ( Kafka ) se conecta a tu agente de mensajes Kafka y envía las variables de entorno relacionadas con el trabajo. Para obtener más información sobre las variables de entorno que envía Kafka, consulta « 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-jobque utilice la imagenicr.io/codeengine/codeengine. Esta imagen se ha creado a partir decodeengine.go, disponible en el repositorio «Samples for IBM Cloud Code Engine »(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 getpara 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
Puedes crear una suscripción a eventos de Kafka —que define la relación entre el productor (remitente) y el consumidor (destinatario) de eventos de Kafka — mediante 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-secretque 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--brokerpara cada intermediario del tema. La opción--destinationespecifica el recurso Code Engine que recibe los sucesos. Cuando trabaja con un trabajo receptor, también debe especificar la opción--destination-typepara 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 -
Mostrar los detalles de la suscripción al evento « Kafka ».
ibmcloud ce sub kafka get -n mykafkasubscription-withjobSalida 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 ya has creado tu suscripción a eventos Kafka, que hace referencia a la aplicación kafka-receiver-job, utiliza kafka-sender-app para enviar eventos de mensajes a la aplicación receptora.
-
Obtener la URL pública de la aplicación de destino,
kafka-sender-appmediante el uso deibmcloud ce app getComando para encontrar la URL de su aplicación.ibmcloud ce app get -n kafka-sender-app --output urlSalida de ejemplo
https://kafka-sender-app.abcdabcdabc.us-south.codeengine.appdomain.cloud -
Ejecute la aplicación de generador de sucesos Kafka,
kafka-sender-apppara enviar sucesos al trabajo Code Engine de destino. Llame a la aplicaciónkafka-sender-appconcurly especifique valores para el tema y el número de mensajes. Utilice la salida de laibmcloud ce app getComando para encontrar la URL pública de su aplicación productora de eventos. 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 listpara listar las ejecuciones de trabajo para el trabajokafka-receiver-job.
ibmcloud ce jobrun list --job kafka-receiver-job ``` 2. Utilice el mandato **`ibmcloud ce jobrun logs`** para obtener los registros de una ejecución de trabajo específica. ```txt {: pre} ibmcloud ce jobrun logs -n kafka-receiver-job-abcde ``` Salida de ejemplo ```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 ``` Cuando utilice el trabajo receptor Kafka (`icr.io/codeengine/codeengine`), busque `CE_DATA` en los registros del trabajo receptor para ver los mensajes recibidos. Ten en cuenta que la información de registro de las ejecuciones de los trabajos solo se conserva durante una hora. Para obtener más información sobre la visualización de registros para apps o trabajos, consulte [Visualización de registros](/docs/codeengine?topic=codeengine-logging). - Utilice el mandato
Variables de entorno para eventos de « Kafka » que se envían a los trabajos
Todos los sucesos que se entregan a un trabajo se reciben como variables de entorno. Estas variables de entorno incluyen el prefijo « CE_ » y se basan en la especificación CloudEvents.
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 obtener más información, consulta los atributos de « CloudEvent ».
La siguiente tabla describe las variables de entorno específicas de los eventos de « 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
Puedes consultar los detalles de tu suscripción al evento « Kafka » o actualizarla.
Visualización y actualización de suscripciones de sucesos de Kafka desde la consola
-
Para consultar la información sobre tus suscripciones a eventos
- Desde la página «Proyectos» de Code Engine, accede a tu 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
- Ve a la página de tu 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 mykafkasubscriptionSalida 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-topic2Puedes utilizar el
ibmcloud ce subscription kafka updatecomando actualizar los valores de la suscripción a Kafka. Sin embargo, no puede modificar el valor del grupo de consumidores con este mandato. Si deseas actualizar la suscripción para que haga referencia a un tema diferente, asegúrate de que el tema « Kafka » exista antes de actualizar la suscripción.
Supresión de una suscripción de suceso de Kafka
Cuando ya no necesites una suscripción a « Kafka », puedes cancelarla.
Al eliminar una suscripción, se utilizan las credenciales del servicio de la instancia de Event Streams para eliminar los grupos de consumidores de la instancia de Event Streams. Si la credencial del servicio ya se ha eliminado o no es válida en el momento de eliminar la suscripción, los grupos de consumidores no se podrán eliminar de la instancia del servicio « Event Streams ». Tu solicitud de cancelación de la suscripción al evento « Code Engine » ( Kafka ) ha fallado.
Cómo eliminar una suscripción a « Kafka » desde la consola
- Desde la página «Proyectos» de Code Engine, accede a tu 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.
Cómo eliminar una suscripción a « Kafka » mediante la CLI
Puedes eliminar una suscripción a « Kafka » ejecutando el ibmcloud ce subscription kafka delete comando.
Por ejemplo, utiliza el siguiente comando para eliminar una suscripción de « Kafka » denominada « 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 adicionales, utiliza las opciones « --extension » junto con el ibmcloud ce subscription kafka create comando de la CLI.
Para obtener más información, consulte ¿Puedo utilizar otras especificaciones de CloudEvents?