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

  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 tu 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 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

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 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

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.

  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 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
    

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

  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.

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

Sigue los siguientes pasos para crear una suscripción a eventos de « Kafka » para una aplicación desde la consola.

  1. Desde la página «Proyectos» de Code Engine, accede a tu 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 obtener más información sobre Message Broker,
    1. 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 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. 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-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, 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.

  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. Una vez iniciado el registro, llame a la aplicación kafka-sender-app con curl y especifique el URL público del kafka-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

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

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.

  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. Mostrar los detalles de la suscripción al evento « 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 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.

  1. Obtener la URL pública de la aplicación de destino, kafka-sender-app mediante el uso de ibmcloud ce app get Comando con el --output url Opción para encontrar la URL de tu aplicación.

    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 el resultado del ibmcloud ce app get comando 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"
    
  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 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

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]

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

  1. 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 de codeengine.go, disponible en el repositorio «Samples for IBM Cloud Code Engine »(GitHub). Este ejemplo no requiere ninguna variable de entorno.
  2. 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

Sigue los siguientes pasos para crear una suscripción a eventos de « Kafka » para una aplicación desde la consola.

  1. Desde la página «Proyectos» de Code Engine, accede a tu 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 obtener más información sobre Message Broker,
    1. 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 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. 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 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 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.
  8. 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.

  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. Una vez iniciado el registro, llame a la aplicación kafka-sender-app con curl y especifique el URL público del kafka-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

  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 se ha creado a partir de codeengine.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
    
  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

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.

  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. Mostrar los detalles de la suscripción al evento « 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 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.

  1. Obtener la URL pública de la aplicación de destino, kafka-sender-app mediante el uso de ibmcloud ce app get Comando para encontrar la URL de su aplicación.

    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 de la ibmcloud ce app get Comando 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"
    
  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.
    
    ```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).
    
    
    
    

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 ».

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

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

    1. Desde la página «Proyectos» de Code Engine, accede a tu 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. 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.
    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
    

    Puedes utilizar el ibmcloud ce subscription kafka update comando 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

  1. Desde la página «Proyectos» de Code Engine, accede a tu 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.

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?