IBM Cloud Docs
Trabajar con el productor de eventos Kafka

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

  1. Descargue e instale la CLI de IBM Cloud. Inicie una sesión en la CLI de IBM Cloud.

    ibmcloud login
    
  2. Descargue e instale la CLI de Code Engine.

    ibmcloud plugin install code-engine -f
    
  3. 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
    
  4. 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

  1. 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 denominada myeventstream.

    ibmcloud resource service-instance-create myeventstream messagehub lite us-south
    
  2. 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 y kafka-brokers_sasl para la clave de servicio. Necesita esta información cuando configura la suscripción de Code Engine Kafka. Los valores de password y apikey son los mismos en la clave de servicio para la instancia de servicio de Event Streams. También puede utilizar el mandato ibmcloud resource service-key myeventstream-key para recuperar la información de clave de servicio.

  3. Inicialice el plugin Event Streams relativo a la instancia de servicio de Event Streams.

    ibmcloud es init --instance-name myeventstream
    
  4. 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

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 de user 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 es token. 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 de apikey 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 de user 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 es token. 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 de apikey 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.

  1. Cree una aplicación Code Engine denominada kafka-sender-app con la siguiente información.

    1. Haga referencia a la imagen de contenedor de icr.io/codeengine/kafka-sender para esta app. Esta imagen se crea a partir de sender.go, que está disponible en el GitHub de Samples for IBM Cloud Code Engine. Esta aplicación de remitente de ejemplo requiere valores para password y BROKERS.
    2. En la sección Variables de entorno (opcional), añada las variables de entorno siguientes.
      1. 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.
      2. Añada otra variable de entorno para hacer referencia al secreto completo, kafka-subscription-secret. Este secreto contiene las credenciales para password.
    3. (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.
    4. Pulse Crear para crear y desplegar la app.
  2. 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.

  1. 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 contenedor icr.io/codeengine/kafka-sender. Esta imagen se crea a partir de sender.go, que está disponible en el GitHub de Samples for IBM Cloud Code Engine. Esta app de remitente de ejemplo requiere las credenciales de password que están almacenadas en kafka-subscription-secret y requiere la variable de entorno BROKERS.
    • Especifique la opción --env-from-secret para hacer referencia al secreto completo, kafka-subscription-secret, que contiene las credenciales de password.
    • 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
    

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

  1. 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 imagen icr.io/codeengine/kafka-receiver. Esta imagen se crea a partir de receiver.go, que está disponible en el GitHub de Samples for IBM Cloud Code Engine. Este ejemplo no requiere ninguna variable de entorno.
  2. 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

Complete los siguientes pasos para crear una suscripción a eventos Kafka para una aplicación desde la consola.

  1. Desde la Code Engine Proyectos, vaya a su proyecto.
  2. En la página Visión general, pulse Suscripciones de sucesos.
  3. En la página Suscripciones de sucesos, pulse Crear para crear la suscripción.
  4. En la página Crear una suscripción de suceso, seleccione el mosaico Event Streams / Kafka para especificar el tipo de suceso.
  5. Para General, proporcione un nombre para la suscripción de Event Streams / Kafka. Pulse Siguiente para continuar.
  6. Para más información sobre el agente de mensajes,
    1. 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 de myeventstream-key. Puede encontrar los intermediarios para la instancia de servicio en Event Streams en el campo Kafka_brokers_sasl.
    2. 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 y password. Los valores de username y password deben coincidir con los valores de las credenciales de servicio para la instancia de Kafka o Event Streams. Por ejemplo, el valor de username es el valor de user que se lista en los detalles de las credenciales de servicio en la instancia de servicio de Event Streams. El valor de password es el valor de apikey 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.
    3. 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.
    4. (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.
    5. Pulse Siguiente para continuar.
  7. 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 imagen icr.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 a https://<base application URL>/events. Pulse Siguiente para continuar.
  8. 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.

  1. Inicie el registro de la aplicación receptora para ver los registros de la aplicación desde la consola para ver los sucesos.

  2. (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.

  3. Después de iniciar el registro, llame a la aplicación kafka-sender-app con curl y especifique el URL público de kafka-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

  1. 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 imagen icr.io/codeengine/kafka-receiver. Esta imagen se crea a partir de receiver.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 a https://<base application URL>/events.

  2. Después de desplegar esta app, ejecute el mandato app get para confirmar que la app está en estado ready.

    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.

  1. 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 de kafka-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 mandato ibmcloud 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
    
  2. 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.

  1. Obtenga el URL público de la app de destino, kafka-sender-app utilizando el mandato ibmcloud 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
    
  2. 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ón kafka-sender-app con curl 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"
    
  3. 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, como kafka-receiver-app. Cuando utilice la aplicación receptora Kafka (icr.io/codeengine/kafka-receiver), busque Event 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

Archivos de cabecera para eventos
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

  1. 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.
  2. 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

Complete los siguientes pasos para crear una suscripción a eventos Kafka para una aplicación desde la consola.

  1. Desde la Code Engine Proyectos, vaya a su proyecto.
  2. En la página Visión general, pulse Suscripciones de sucesos.
  3. En la página Suscripciones de sucesos, pulse Crear para crear la suscripción.
  4. En la página Crear una suscripción de suceso, seleccione el mosaico Event Streams / Kafka para especificar el tipo de suceso.
  5. Para General, proporcione un nombre para la suscripción de Event Streams / Kafka. Pulse Siguiente para continuar.
  6. Para más información sobre el agente de mensajes,
    1. 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 de myeventstream-key.
    2. 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 y password. Los valores de username y password deben coincidir con los valores de las credenciales de servicio para la instancia de Kafka o Event Streams. Por ejemplo, el valor de username es el valor de user que se lista en los detalles de las credenciales de servicio en la instancia de servicio de Event Streams. El valor de password es el valor de apikey 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.
    3. 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.
    4. (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.
    5. Pulse Siguiente para continuar.
  7. 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 trabajo kafka-receiver-job que hace referencia a la imagen icr.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.
  8. 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.

  1. Inicie el registro del trabajo receptor para ver los registros de trabajo de la consola para ver los sucesos.

  2. (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.

  3. Después de iniciar el registro, llame a la aplicación kafka-sender-app con curl y especifique el URL público de kafka-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

  1. 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 imagen icr.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
    
  2. (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.

  1. 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 de kafka-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 mandato ibmcloud 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 es app.

    ibmcloud ce sub kafka create --name mykafkasubscription-withjob --destination-type job --destination kafka-receiver-job --secret kafka-subscription-secret --topic kafka-topic1 --broker broker-3-abcdabcdabcdabcd.kafka.svc07.us-south.eventstreams.cloud.ibm.com:9093 --broker broker-5-abcdabcdabcdabcd.kafka.svc07.us-south.eventstreams.cloud.ibm.com:9093 --broker  broker-0-abcdabcdabcdabcd.kafka.svc07.us-south.eventstreams.cloud.ibm.com:9093 --broker broker-1-abcdabcdabcdabcd.kafka.svc07.us-south.eventstreams.cloud.ibm.com:9093 --broker broker-4-abcdabcdabcdabcd.kafka.svc07.us-south.eventstreams.cloud.ibm.com:9093 --broker broker-2-abcdabcdabcdabcd.kafka.svc07.us-south.eventstreams.cloud.ibm.com:9093
    
  2. 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.

  1. Obtenga el URL público de la app de destino, kafka-sender-app utilizando el mandato ibmcloud 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
    
  2. 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ón kafka-sender-app con curl y especifique valores para el tema y el número de mensajes. Utilice la salida del mandato ibmcloud 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"
    
  3. 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 ejemplo kafka-receiver-job. Para cada mensaje que se envía utilizando curl, los sucesos de Kafka desencadenan el mismo número de ejecuciones de trabajo. Para ver los sucesos enviados a los trabajos, utilice el mandato ibmcloud ce jobrun logs.

    1. Utilice el mandato ibmcloud ce jobrun list para listar las ejecuciones de trabajo para el trabajo kafka-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.

      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), busque CE_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.

Variables de entorno para sucesos
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

    1. Desde la Code Engine Proyectos, vaya a su proyecto.
    2. 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

    1. 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.
    2. 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.
    3. 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

  1. Desde la Code Engine Proyectos, vaya a su proyecto.
  2. En la página Visión general, pulse Suscripciones de sucesos para ver una lista de suscripciones definidas.
  3. 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?