Collaboration avec l'organisateur de l'événement « Kafka »

Un abonnement « Code Engine » ( Kafka ) surveille l'apparition de nouveaux messages dans une instance de « Kafka ». Lorsque vous créez un abonnement pour un ensemble de rubriques, votre application ou votre travail reçoit un événement distinct pour chaque nouveau message qui apparaît dans l'une des rubriques. Vous pouvez créer au maximum 100 abonnements « Kafka » par projet.

Bien que vous puissiez utiliser n'importe quelle instance d' Kafka, les exemples présentés dans cette rubrique utilisent le service IBM® Event Streams for IBM Cloud®. Event Streams est un service de streaming d'événements IBM destiné aux événements Kafka. Pour plus d'informations sur ce service, consultez la documentation de Event Streams.

Configuration du générateur d'événements « Kafka »

Vous pouvez configurer votre producteur de messages « Kafka » pour qu'il envoie des messages aux abonnements aux événements « Code Engine » et « Kafka ». Utilisez votre abonnement aux événements « Code Engine » ( Kafka ) pour déclencher des applications ou des tâches dès la réception d'un message « Kafka ».

Pour commencer, créez une instance de service Event Streams pour votre service de diffusion en continu d'événements. Alors que vous pouvez utiliser la console ou l'interface de ligne de commande, les étapes suivantes décrivent comment configurer le fournisseur d'événements Event Streams avec l'interface de ligne de commande.

Configuration de l'environnement CLI Event Streams

  1. Téléchargez et installez l'interface de ligne de commande IBM Cloud. Connectez-vous à l'interface de ligne de commande IBM Cloud.

    ibmcloud login
    
  2. Téléchargez et installez l'interface de ligne de commandeCode Engine.

    ibmcloud plugin install code-engine -f
    
  3. Pour utiliser le service Event Streams pour créer votre instance Kafka, téléchargez et installez l'interface de ligne de commandeEvent Streams.

    ibmcloud plugin install event-streams -f
    
  4. Connectez-vous à votre compte IBM Cloud et ciblez un groupe de ressources. Ciblez un groupe de ressources en exécutant la commande suivante : Pour obtenir la liste de vos groupes de ressources, exécutez la commande « ibmcloud resource groups ».

    ibmcloud target -g <resource_group>
    

Configuration de votre instance d' Kafka

  1. Créez une instance de service pour Event Streams. Le nom du service CLI Event Streams est messagehub. Pour cet exemple, créez une instance de service Event Streams nommée myeventstream.

    ibmcloud resource service-instance-create myeventstream messagehub lite us-south
    
  2. Créez une clé de service pour fournir des données d'identification à votre instance de service.

    ibmcloud resource service-key-create myeventstream-key Manager --instance-name myeventstream
    

    Exemple de sortie

    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
    

    Notez les valeurs de user, password et kafka-brokers_sasl pour votre clé de service. Vous avez besoin de ces informations lorsque vous configurez votre abonnement Code Engine Kafka. Les valeurs de password et apikey sont identiques dans la clé de service de votre instance de service Event Streams. Vous pouvez également utiliser la commande ibmcloud resource service-key myeventstream-key pour extraire les informations de clé de service.

  3. Initialisez le plug-in Event Streams relatif à votre instance de service Event Streams.

    ibmcloud es init --instance-name myeventstream
    
  4. Créer un sujet « Event Streams ».

    ibmcloud es topic-create kafka-topic1
    

Configuration d'un exemple d'application Code Engine pour produire des messages Kafka

Pour ce scénario, utilisons une application Code Engine pour agir en tant que producteur d'événements des messages Kafka. Cette application a pour objet de se connecter à votre instance Event Streams et d'envoyer des messages Kafka. Cette application utilise le modèle d'application d'émetteurCode Engine Kafka pour envoyer des messages Kafka. Cet exemple d'image d'expéditeur requiert la variable d'environnement BROKERS et un secret qui inclut les données d'identification password. Vous pouvez créer cette application depuis la console ou à l'aide de l'interface de ligne de commande (CLI).

Veillez à indiquer l'en-tête « Content-Type » lorsque vous envoyez des messages « Kafka » à l'adresse Event Streams. Spécifiez cet en-tête pour que le consommateur puisse recevoir des messages avec le type de contenu attendu ; par exemple, application/json.

Création d'un secret avec les données d'identification requises par les exemples Kafka

Avant de créer l'application Code Engine pour envoyer des messages Kafka, créez un secret Code Engine contenant les données d'identification requises.

Avant de commencer

Pour simplifier ce scénario, créez un secret, kafka-subscription-secret, qui contiendra les informations d'identification requises à la fois pour l'application exemple d'expéditeur Kafka et pour l'abonnement à l'événement Kafka, qui utilise l'exemple de récepteur Kafka. Ces identifiants sont nécessaires pour que l'application d'expédition d'exemple Kafka et l'abonnement à l'événement Code Engine Kafka puissent communiquer avec l'instance du service Event Streams. Même s'il n'est pas obligatoire de créer ce secret avant de créer l'application d'expédition Kafka et l'abonnement à l'événement, cette opération simplifie les étapes requises.

Création d'un secret avec les données d'identification requises par les exemples Kafka à partir de la console

Pour créer le secret kafka-subscription-secret à partir de la console, accédez à Secrets and configmaps et cliquez sur Créer et sélectionnez le secret à créer. Pour plus d'informations, voir Création d'un secret à partir de la console.

  • Spécifiez la clé username avec la valeur user répertoriée dans les détails des données d'identification du service dans l'instance de service Event Streams. Pour l'instance de service Event Streams, cette valeur est token. Cette clé est requise pour l'authentification entre l'abonnement à l'événement Code Engine Kafka et le courtier de messages Kafka.
  • Spécifiez la clé password avec la valeur apikey répertoriée dans les détails des données d'identification du service dans l'instance de service Event Streams. Cette clé est requise pour l'exemple de l'expéditeur et pour activer les communications entre l'abonnement à l'événement Kafka Code Engine et le courtier de messages Kafka.
Création d'un secret avec les données d'identification requises par les exemples Kafka à l'aide de l'interface de ligne de commande

Pour créer le secret kafka-subscription-secret avec l'interface de ligne de commande, ajoutez une variable d'environnement littérale pour password et username. Pour plus d'informations, voir Création d'un secret avec l'interface de ligne de commande.

  • Spécifiez la clé username avec la valeur user répertoriée dans les détails des données d'identification du service dans l'instance de service Event Streams. Pour l'instance de service Event Streams, cette valeur est token. Cette clé est requise pour l'authentification entre l'abonnement à l'événement Code Engine Kafka et le courtier de messages Kafka.

  • Spécifiez la clé password avec la valeur apikey répertoriée dans les détails des données d'identification du service dans l'instance de service Event Streams. Cette clé est requise pour l'exemple de l'expéditeur et pour activer les communications entre l'abonnement à l'événement Kafka Code Engine et le courtier de messages Kafka.

    ibmcloud ce secret create --name kafka-subscription-secret --from-literal password=<value_of_apikey> --from-literal username=<value_of_user>
    

    Par exemple :

    ibmcloud ce secret create --name kafka-subscription-secret --from-literal password=abcdeH9tu3qE5Sn8VbJfcDEWtjR_l0iPisB3abcdefgh --from-literal username=token
    

Création d'une application Code Engine pour envoyer des événements

Créez une application « Code Engine » permettant de se connecter à votre instance Event Streams et de générer (envoyer) des messages « Kafka » à un destinataire de messages « Kafka » ( Kafka consumer).

Création d'une application Code Engine pour envoyer des événements à partir de la console

Pour créer l'application « kafka-sender-app » à partir de la console, procédez comme suit.

  1. Créez une application Code Engine appelée kafka-sender-app avec les informations suivantes.

    1. Référencez l'image de conteneur icr.io/codeengine/kafka-sender pour cette application. Cette image est générée à partir de sender.go, qui est disponible dans Exemples pour le référentiel IBM Cloud Code Engine GitHub. Cet exemple d'application d'expéditeur requiert des valeurs pour password et BROKERS.
    2. Dans la section Variables d'environnement (facultatives), ajoutez les variables d'environnement suivantes.
      1. Ajoutez une variable d'environnement littérale, BROKERS. Pour la valeur de cette clé, indiquez un ou plusieurs des hôtes de courtier répertoriés dans les détails des données d'identification du service dans l'instance de service Event Streams.
      2. Ajoutez une autre variable d'environnement pour référencer le secret complet, kafka-subscription-secret. Ce secret contient les données d'identification pour password.
    3. (Facultatif) Dans la section Ressources & mise à l'échelle, spécifiez 1 pour le nombre minimal d'instances afin que l'application ait toujours une instance en cours d'exécution et qu'elle ne soit pas mise à l'échelle à zéro. Le fait de configurer l'application afin de toujours avoir une instance en cours d'exécution est utile lorsque vous affichez les journaux. Si vous travaillez dans un environnement de production, prenez en compte le coût de la conservation d'une instance en cours d'exécution de votre application ou si vous souhaitez que Code Engine soit automatiquement réduit à zéro. Par défaut, l'application est mise à l'échelle à zéro lorsqu'elle n'est pas utilisée.
    4. Cliquez sur Créer pour créer et déployer votre application.
  2. Confirmez que cette application a le statut ready.

Création d'une application Code Engine pour envoyer des événements à l'aide de l'interface de ligne de commande

Pour créer l'application kafka-sender-app avec l'interface de ligne de commande, utilisez les commandes suivantes.

  1. Créez une application Code Engine appelée kafka-sender-app avec les informations suivantes.

    • Spécifiez l'option --image pour référencer l'image de conteneur icr.io/codeengine/kafka-sender. Cette image est générée à partir de sender.go, qui est disponible dans Exemples pour le référentiel IBM Cloud Code Engine GitHub. Cet exemple d'application d'expéditeur requiert les données d'identification password qui sont stockées dans votre kafka-subscription-secret et requiert la variable d'environnement BROKERS.
    • Spécifiez l'option --env-from-secret pour référencer le secret complet, kafka-subscription-secret, qui contient les données d'identification password.
    • Spécifiez l'option --env pour ajouter une variable d'environnement littérale, BROKERS, et indiquez le nom de l'un des hôtes de courtier répertoriés dans les détails des données d'identification du service dans l'instance de service Event Streams. Toutefois, si vous souhaitez spécifier plusieurs noms d'hôte de courtier, utilisez le format --env BROKERS-broker1,broker2,broker3.
    • (facultatif) Spécifiez l'option « --min-scale=1 » afin que l'application dispose toujours d'une instance en cours d'exécution et ne soit pas réduite à zéro. Le fait de configurer l'application afin de toujours avoir une instance en cours d'exécution est utile lorsque vous affichez les journaux. Si vous travaillez dans un environnement de production, prenez en compte le coût de la conservation d'une instance en cours d'exécution de votre application ou si vous souhaitez que Code Engine soit automatiquement réduit à zéro. Par défaut, l'application est mise à l'échelle à zéro lorsqu'elle n'est pas utilisée.
    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
    

Configuration de Code Engine pour recevoir des événements Kafka pour une application

Pour que l' Code Engine e puisse fonctionner avec les événements Kafka, utilisez la console ou l'interface en ligne de commande (CLI) pour configurer un abonnement aux événements Code Engine Kafka afin de vous connecter aux brokers d'événements Kafka et d'écouter les événements Kafka. Configurez également une application (ou une tâche) « Code Engine » qui servira de récepteur des événements « Kafka ». L'abonnement aux événements « Kafka » définit la relation entre le producteur (expéditeur) et le consommateur (destinataire) d'événements « Kafka ».

L'abonnement à l'événement Code Engine Kafka se connecte à votre courtier de messages Kafka et envoie des demandes HTTP Post pour chaque message Kafka entrant à l'application réceptrice. Pour plus d'informations sur les en-têtes et le corps HTTP, voir Informations relatives aux en-têtes et au corps HTTP pour les événements.

S'abonner aux événements « Kafka » d'une application depuis la console

Vous pouvez utiliser la console pour configurer un abonnement aux événements d' Kafka, afin que ces événements soient envoyés à une application Code Engine.

Création d'une application Code Engine pour recevoir des événements Kafka à partir de la console

  1. Créez une application Code Engine pour agir en tant que consommateur d'événements des messages Kafka et recevoir les événements Kafka. Par exemple, créez une application appelée kafka-receiver-app qui utilise l'image icr.io/codeengine/kafka-receiver. Cette image est générée à partir de receiver.go, qui est disponible dans Exemples pour le référentiel IBM Cloud Code Engine GitHub. Cet exemple ne nécessite aucune variable d'environnement.
  2. Après avoir déployé cette application, confirmez qu'elle est à l'état ready.

Lorsque vous utilisez la console, il n’est pas nécessaire que l’application ou la tâche que vous utilisez pour recevoir les événements « Kafka » existe avant de créer l’abonnement à l’événement « Kafka ». Toutefois, si l'application ou le travail n'existe pas lorsque vous créez l'abonnement d'événement, le statut de l'abonnement indique que le consommateur n'existe pas. Vous devez créer l'application ou le travail pour que l'abonnement soit à l'état prêt et puisse recevoir des événements via cet abonnement.

Création d'un abonnement d'événement Code Engine Kafka pour une application à partir de la console

L'abonnement aux événements « Kafka » définit la relation entre le producteur (expéditeur) et le consommateur (destinataire) d'événements « Kafka ».

Avant de commencer

Suivez les étapes ci-dessous pour créer un abonnement aux événements « Kafka » pour une application depuis la console.

  1. Depuis la page « Projets » d' Code Engine, accédez à votre projet.
  2. Sur la page Présentation, cliquez sur Abonnements à des événements.
  3. Sur la page Abonnements à des événements, cliquez sur Créer pour créer votre abonnement.
  4. Dans la page Créer un abonnement à un événement, sélectionnez la vignette Event Streams / Kafka pour spécifier le type d'événement.
  5. Pour Général, indiquez un nom pour l'abonnement Event Streams / Kafka. Cliquez sur Suivant pour continuer.
  6. Pour plus d'informations sur le Message Broker,
    1. Indiquez les hôtes du courtier de messages « Kafka » correspondant aux files d'attente à partir desquelles les messages sont reçus en tant qu'événements via cet abonnement. Pour obtenir des informations sur les hôtes de courtier, les rubriques et les données d'identification d'accès, affichez les détails des données d'identification du service pour votre instance de service dans la console Event Streams. Par exemple, spécifiez "broker-0-abcdabcdabcdabcd.kafka.svc01.us-south.eventstreams.cloud.ibm.com:9093", "broker-1-abcdabcdabcdabcd.kafka.svc01.us-south.eventstreams.cloud.ibm.com:9093" pour les hôtes de courtier de messages de l'instance de service myeventstream-key. Vous pouvez trouver les courtiers de l'instance de service dans Event Streams dans la zone Kafka_brokers_sasl.
    2. Cliquez sur Configurer pour configurer l'accès au courtier de messages. Pour vous authentifier à partir de Code Engine auprès de votre instance Kafka ou Event Streams, vous devez fournir un secret d'accès au courtier de messages.
      • Vous pouvez créer un nouveau secret, choisir un secret existant ou, si les données d'identification ne sont pas requises pour accéder aux courtiers de messages, choisir None.
      • Pour créer un secret, cliquez sur Créer. Indiquez un nom pour le secret et des valeurs pour username et password. Les valeurs de username et password doivent correspondre aux valeurs des données d'identification du service pour l'instance Kafka ou Event Streams. Par exemple, la valeur de username est la valeur de user qui est répertoriée dans les détails des données d'identification du service dans l'instance de service Event Streams. La valeur de password est la valeur de apikey qui est répertoriée dans les détails des données d'identification du service dans l'instance de service Event Streams.
      • Pour cet exemple, utilisez le secret kafka-subscription-secret existant qui a été créé précédemment.
    3. Indiquez le nom des rubriques existantes pour les files d'attente de messages. Par exemple, kafka-topic1. Pour obtenir des informations sur les rubriques existantes de votre instance de service, accédez à votre instance de service dans la console Event Streams et affichez les rubriques.
    4. (Facultatif) Indiquez un groupe de consommateurs. Les consommateurs des messages Kafka peuvent être regroupés en groupes de consommateurs. Si vous utilisez des groupes de consommateurs, la configuration de la rubrique contrôle le flux de messages vers les consommateurs du groupe de consommateurs. Chaque fois qu'un consommateur est ajouté à un groupe de consommateurs ou supprimé d'un groupe de consommateurs, le flux de messages de cette rubrique peut changer. Cette action peut empêcher les consommateurs existants de recevoir des messages de cette rubrique.
    5. Cliquez sur Suivant pour continuer.
  7. Pour le consommateur d'événements, indiquez l'application Code Engine afin qu'elle reçoive les événements. Notez que vous pouvez choisir dans une liste d'applications et de travaux définis ou que vous pouvez indiquer un nom pour une application (ou un travail) qui n'a pas encore été créée. Il n'est pas nécessaire que l'application ou le travail existe lorsque vous créez l'abonnement d'événement avec la console. Toutefois, lorsque l'abonnement est créé, le statut de l'abonnement indique que le consommateur n'existe pas. Vous devez créer l'application ou le travail pour que l'abonnement soit à l'état prêt et puisse recevoir des événements via cet abonnement. Pour cet exemple, utilisez l'application kafka-receiver-app qui référence l'image icr.io/codeengine/kafka-receiver. Si votre application n'existe pas, indiquez le nom de votre application et créez votre application après avoir créé l'abonnement Kafka. Pour les applications uniquement, vous pouvez le cas échéant spécifier un chemin. Par défaut, les événements sont acheminés vers l'URL racine de l'application de destination. Vous pouvez envoyer des événements vers une autre destination dans l'application en spécifiant un chemin. Par exemple, si votre chemin d'abonnement indique /events, les évènements sont envoyés à https://<base application URL>/events. Cliquez sur Suivant pour continuer.
  8. En résumé, vérifiez les paramètres de votre abonnement aux événements « Kafka » et modifiez-les si nécessaire. Lorsque vous êtes prêt, cliquez sur « Créer » pour créer l'abonnement « Kafka ».

Envoi d'événements à l'application de réception à partir de la console

Maintenant que votre abonnement à l'événement « Kafka », qui fait référence à l'application « kafka-receiver-app », est créé, utilisez l'interface « kafka-sender-app » pour envoyer des événements de message à l'application réceptrice.

  1. Démarrez la consignation de l'application réceptrice pour afficher les journaux d'application à partir de la console afin d'afficher les événements.

  2. (facultatif) Démarrez la journalisation de l'application émettrice pour afficher les journaux d'application à partir de la console afin d'afficher des informations sur les événements envoyés.

  3. Une fois la journalisation lancée, appelez l'application kafka-sender-app avec curl et indiquez le URL public du kafka-sender-app, le nom de votre sujet et le nombre de messages à envoyer. Vous pouvez obtenir le site public URL de cette application à partir de l'onglet Domain mappings de votre application. Par exemple :

    curl "<public_URL_of_Kafka_sender_app>?topic=<your_topic_name>&num=<number_of_messages_to_produce>"
    

Veillez à encapsuler la valeur dans des guillemets pour vous assurer qu'elle est traitée comme une chaîne unique.

S'abonner aux événements « Kafka » d'une application à l'aide de l'interface de ligne de commande (CLI)

Vous pouvez utiliser l'interface de ligne de commande (CLI) pour configurer un abonnement aux événements d' Kafka, afin que ces événements soient envoyés à une application Code Engine.

Les événements sont envoyés aux applications en tant que demandes HTTP POST. Pour plus d'informations sur les données fournies avec les événements « Kafka », consultez la page HTTP en-têtes et informations de corps pour les événements. Si votre événement est transmis à une tâche « Code Engine », celle-ci reçoit les événements sous forme de variables d'environnement. Pour plus d'informations sur les variables d'environnement des abonnements à « Kafka », consultez la section Variables d'environnement pour les événements.

Création d'une application Code Engine pour recevoir des événements Kafka à l'aide de l'interface de ligne de commande

Avant de commencer

  1. Créez une application Code Engine pour agir en tant que consommateur d'événements des messages Kafka et recevoir les événements Kafka. Par exemple, créez une application appelée kafka-receiver-app2 qui utilise l'image icr.io/codeengine/kafka-receiver. Cette image est générée à partir de receiver.go, qui est disponible dans Exemples pour le référentiel IBM Cloud Code Engine GitHub. Cet exemple ne nécessite aucune variable d'environnement. Vous pouvez, si vous le souhaitez, spécifier l'option « --min-scale=1 » afin que l'application dispose toujours d'une instance en cours d'exécution et que son nombre d'instances ne tombe jamais à zéro. Le fait de configurer l'application afin de toujours avoir une instance en cours d'exécution est utile lorsque vous affichez les journaux. Si vous travaillez dans un environnement de production, prenez en compte le coût de la conservation d'une instance en cours d'exécution de votre application ou si vous souhaitez que Code Engine soit automatiquement réduit à zéro. Par défaut, l'application est mise à l'échelle à zéro lorsqu'elle n'est pas utilisée.

    ibmcloud ce app create -n kafka-receiver-app2 --image icr.io/codeengine/kafka-receiver --min-scale 1
    

    Par défaut, les événements sont acheminés vers l'URL racine de l'application de destination. Vous pouvez envoyer des événements vers une autre destination dans l'application à l'aide de l'option --path. Par exemple, si votre abonnement indique --path /event, l'événement est envoyé à https://<base application URL>/events.

  2. Après avoir déployé cette application, exécutez la commande app get pour confirmer que l'application a le statut ready.

    ibmcloud ce app get -n kafka-receiver-app2
    

Création d'un abonnement à un événement Code Engine Kafka pour une application à l'aide de l'interface de ligne de commande

Vous pouvez créer un abonnement à un événement « Kafka », qui définit la relation entre le producteur (expéditeur) et le consommateur (destinataire) d’événements Kafka, à l’aide de l’interface de ligne de commande (CLI).

  1. Créez un abonnement d'événement Code Engine Kafka pour vos événements Kafka à l'aide de la commande ibmcloud ce sub kafka create. Utilisez le secret kafka-subscription-secret que vous avez créé précédemment pour accéder au courtier de messages. Spécifiez les informations de courtier en fonction des informations de données d'identification du service pour votre ressource Kafka. Pour cet exemple, vous pouvez obtenir les informations de courtier à partir de la sortie de la commande ibmcloud resource service-key myeventstream-key. Notez que vous devez spécifier une option --broker pour chaque courtier de votre rubrique. L'option --destination spécifie la ressource Code Engine qui reçoit les événements.

    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. Afficher les détails de l'abonnement à l'événement « Kafka ».

    ibmcloud ce sub kafka get -n mykafkasubscription
    

    Exemple de sortie

    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
    

Envoi d'événements à l'application de réception à l'aide de l'interface de ligne de commande

Maintenant que votre abonnement à l'événement « Kafka », qui fait référence à l'application « kafka-receiver-app », est créé, utilisez l'interface « kafka-sender-app » pour envoyer des événements de message à l'application réceptrice.

  1. Obtenez l'adresse publique URL de l'application de destination, kafka-sender-app en utilisant la commande ibmcloud ce app get avec l'option --output url pour trouver le URL de votre application.

    ibmcloud ce app get -n kafka-sender-app --output url
    

    Exemple de sortie

    https://kafka-sender-app.abcdabcdabc.us-south.codeengine.appdomain.cloud
    
  2. Exécutez l'application de fournisseur d'événements Kafka, kafka-sender-app pour envoyer des événements à l'application Code Engine de destination. Appelez l'application kafka-sender-app avec curl et spécifiez des valeurs pour la rubrique et le nombre de messages. Utilisez la sortie de la ibmcloud ce app get commande pour trouver l' URL publique de votre application. Veillez à encapsuler la valeur dans des guillemets pour vous assurer qu'elle est traitée comme une chaîne unique.

    curl "<public_URL_of_Kafka_sender_app>?topic=<your_topic_name>&num=<number_of_messages_to_produce>"
    

    Par exemple :

    curl "https://kafka-sender-app.abcdabcdabc.us-south.codeengine.appdomain.cloud?topic=kafka-topic1&num=1"
    
  3. Afficher les événements dans les journaux. Lorsque votre abonnement à des événements Kafka est créé avec un courtier, des rubriques et un secret d'accès valides, et que vous disposez d'une application Kafka qui génère des messages sur cette rubrique (par exemple, kafka-sender-app), vous pouvez afficher les événements dans les journaux de votre application Code Engine de destination qui reçoit des messages Kafka, tels que kafka-receiver-app. Lorsque vous utilisez l'application de récepteur Kafka (icr.io/codeengine/kafka-receiver), recherchez Event data dans les journaux de l'application de récepteur pour voir les messages reçus.

    ibmcloud ce app logs -n kafka-receiver-app2
    

    Exemple de sortie

    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
    

    Notez que les informations de journalisation relatives aux applications ne sont conservées que pendant une heure. Pour plus d'informations sur l'affichage des journaux pour les applications (ou les travaux), voir Affichage des journaux.

Informations d'en-tête et de corps pour les événements Kafka qui sont distribués aux applications

Tous les événements distribués aux applications sont reçus en tant que messages POST HTTP. Les événements contiennent des en-têtes HTTP qui vous aident à déterminer rapidement des informations clés sur les événements sans examiner le corps (logique métier) de l'événement. Pour plus d'informations, consultez la spécification « CloudEvents ».

En-têtes des applications

Fichiers d'en-tête pour les événements
En-tête Description
ce-id Identificateur unique de l'événement, sauf si un événement est réexécuté. Dans ce cas, il se voit attribuer le même ID.
ce-source Référence d'URI qui indique l'origine de cet événement au sein du producteur d'événement. Pour les événements Kafka, cet en-tête est au format suivant: /apis/v1/namespaces/[PROJECT_SUBDOMAIN]/kafkasources/[KAFKA_SUBSCRIPTION_NAME]#[TOPIC_NAME].
ce-specversion Version de la spécification CloudEvents. Cette valeur est toujours 1.0.
ce-subject Le numéro et le décalage de la partition Kafka. Par exemple, partition:0#1 fait référence à la partition 0 et au décalage 1.
ce-time Heure à laquelle l'événement a été généré.
ce-type Type de l'événement. Pour les événements Kafka, il s'agit de dev.knative.kafka.event.

Exemple de sortie

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 corps pour les applications

Le corps de l' HTTP contient le message « Kafka » et se présente sous le format que vous spécifiez lors de la création ou de la mise à jour de l'abonnement.

Configuration de Code Engine pour recevoir des événements Kafka pour un travail

Pour que l' Code Engine e puisse fonctionner avec les événements Kafka, utilisez la console ou l'interface en ligne de commande (CLI) pour configurer un abonnement aux événements Code Engine Kafka afin de vous connecter aux brokers d'événements Kafka et d'écouter les événements Kafka. Configurez également une tâche (ou une application) « Code Engine » qui servira de récepteur des événements « Kafka ». L'abonnement aux événements « Kafka » définit la relation entre le producteur (expéditeur) et le consommateur (destinataire) d'événements « Kafka ».

S'abonner aux événements « Kafka » pour un travail depuis la console

Vous pouvez utiliser la console pour configurer un abonnement aux événements d' Kafka, de sorte que les événements soient envoyés à une tâche Code Engine.

Lorsque vous créez un abonnement à un événement pour un travail, une exécution de travail est créée pour chaque événement déclenché. Cette exécution de travail comporte les variables d'environnement associées au travail. L'abonnement à l'événement « Code Engine » ( Kafka ) se connecte à votre courtier de messages Kafka et envoie les variables d'environnement associées à la tâche. Pour plus d'informations sur les variables d'environnement transmises par Kafka, consultez la section « Variables d'environnement pour les événements ».

Création d'un travail Code Engine pour recevoir des événements Kafka à partir de la console

  1. Créez un travail Code Engine pour agir en tant que consommateur d'événements des messages Kafka et recevoir les événements Kafka. Par exemple, créez une tâche nommée « kafka-receiver-job » qui utilise l'image d'exemple « icr.io/codeengine/codeengine ». Cette image est issue de codeengine.go, disponible dans le dépôt « Samples for IBM Cloud Code Engine » GitHub. Cet exemple ne nécessite aucune variable d'environnement.
  2. Après avoir créé ce travail, confirmez qu'il est à l'état ready.

Lorsque vous utilisez la console, il n’est pas nécessaire que l’application ou la tâche que vous utilisez pour recevoir les événements « Kafka » existe avant de créer l’abonnement à l’événement « Kafka ». Toutefois, si l'application ou le travail n'existe pas lorsque vous créez l'abonnement d'événement, le statut de l'abonnement indique que le consommateur n'existe pas. Vous devez créer l'application ou le travail pour que l'abonnement soit à l'état prêt et puisse recevoir des événements via cet abonnement.

Création d'un abonnement à un événement Code Engine Kafka pour un travail à partir de la console

L'abonnement aux événements « Kafka » définit la relation entre le producteur (expéditeur) et le consommateur (destinataire) d'événements « Kafka ».

Avant de commencer

Suivez les étapes ci-dessous pour créer un abonnement aux événements « Kafka » pour une application depuis la console.

  1. Depuis la page « Projets » d' Code Engine, accédez à votre projet.
  2. Sur la page Présentation, cliquez sur Abonnements à des événements.
  3. Sur la page Abonnements à des événements, cliquez sur Créer pour créer votre abonnement.
  4. Dans la page Créer un abonnement à un événement, sélectionnez la vignette Event Streams / Kafka pour spécifier le type d'événement.
  5. Pour Général, indiquez un nom pour l'abonnement Event Streams / Kafka. Cliquez sur Suivant pour continuer.
  6. Pour plus d'informations sur le Message Broker,
    1. Indiquez les hôtes du courtier de messages « Kafka » correspondant aux files d'attente à partir desquelles les messages sont reçus en tant qu'événements via cet abonnement. Pour obtenir des informations sur les hôtes de courtier, les rubriques et les données d'identification d'accès, affichez les détails des données d'identification du service pour votre instance de service dans la console Event Streams. Par exemple, spécifiez "broker-0-abcdabcdabcdabcd.kafka.svc01.us-south.eventstreams.cloud.ibm.com:9093", "broker-1-abcdabcdabcdabcd.kafka.svc01.us-south.eventstreams.cloud.ibm.com:9093" pour les hôtes de courtier de messages de l'instance de service myeventstream-key.
    2. Cliquez sur Configurer pour configurer l'accès au courtier de messages. Pour vous authentifier à partir de Code Engine auprès de votre instance Kafka ou Event Streams, vous devez fournir un secret d'accès au courtier de messages.
      • Vous pouvez créer un nouveau secret, choisir un secret existant ou, si les données d'identification ne sont pas requises pour accéder aux courtiers de messages, choisir None.
      • Pour créer un secret, cliquez sur Créer. Indiquez un nom pour le secret et des valeurs pour username et password. Les valeurs de username et password doivent correspondre aux valeurs des données d'identification du service pour l'instance Kafka ou Event Streams. Par exemple, la valeur de username est la valeur de user qui est répertoriée dans les détails des données d'identification du service dans l'instance de service Event Streams. La valeur de password est la valeur de apikey qui est répertoriée dans les détails des données d'identification du service dans l'instance de service Event Streams.
      • Pour cet exemple, utilisez le secret kafka-subscription-secret existant qui a été créé précédemment.
    3. Indiquez le nom des rubriques existantes pour les files d'attente de messages. Par exemple, kafka-topic1. Pour obtenir des informations sur les rubriques existantes de votre instance de service, accédez à votre instance de service dans la console Event Streams et affichez les rubriques.
    4. (Facultatif) Indiquez un groupe de consommateurs. Les consommateurs des messages Kafka peuvent être regroupés en groupes de consommateurs. Si vous utilisez des groupes de consommateurs, la configuration de la rubrique contrôle le flux de messages vers les consommateurs du groupe de consommateurs. Chaque fois qu'un consommateur est ajouté à un groupe de consommateurs ou supprimé d'un groupe de consommateurs, le flux de messages de cette rubrique peut changer. Cette action peut empêcher les consommateurs existants de recevoir des messages de cette rubrique.
    5. Cliquez sur Suivant pour continuer.
  7. Pour le consommateur d'événements, spécifiez la tâche « Code Engine » afin de recevoir les événements. Notez que vous pouvez choisir dans une liste de travaux et d'applications définis, ou vous pouvez fournir un nom pour un travail (ou une application) qui n'a pas encore été créé. Il n'est pas nécessaire que l'application ou le travail existe lorsque vous créez l'abonnement d'événement avec la console. Toutefois, lorsque l'abonnement est créé, le statut de l'abonnement indique que le consommateur n'existe pas. Vous devez créer le travail (ou l'application) avant que l'abonnement ne soit prêt et vous pouvez recevoir des événements via cet abonnement. Pour cet exemple, sélectionnez job comme type de composant et utilisez le travail kafka-receiver-job qui référence l'image icr.io/codeengine/codeengine comme composant pour la réception d'événements. Si votre job n'existe pas, indiquez son nom et créez-le après avoir créé l'abonnement Kafka. Pour les applications uniquement, vous pouvez le cas échéant spécifier un chemin. Cliquez sur Suivant pour continuer.
  8. En résumé, vérifiez les paramètres de votre abonnement aux événements « Kafka » et modifiez-les si nécessaire. Lorsque vous êtes prêt, cliquez sur « Créer » pour créer l'abonnement « Kafka ».

Envoi d'événements au travail de réception à partir de la console

Maintenant que votre abonnement à l'événement « Kafka », qui fait référence au job « kafka-receiver-job », est créé, utilisez l'interface « kafka-sender-app » pour envoyer des événements de message au job récepteur.

  1. Démarrez la journalisation du travail récepteur pour afficher les journaux de travail à partir de la console afin d'afficher les événements.

  2. (facultatif) Démarrez la journalisation de l'application émettrice pour afficher les journaux d'application à partir de la console afin d'afficher des informations sur les événements envoyés.

  3. Une fois la journalisation lancée, appelez l'application kafka-sender-app avec curl et indiquez le URL public du kafka-sender-app, le nom de votre sujet et le nombre de messages à envoyer. Vous pouvez obtenir le site public URL de cette application à partir de l'onglet Domain mappings de votre application. Par exemple :

    curl "<public_URL_of_Kafka_sender_app>?topic=<your_topic_name>&num=<number_of_messages_to_produce>"
    

Veillez à encapsuler la valeur dans des guillemets pour vous assurer qu'elle est traitée comme une chaîne unique.

Lorsque votre abonnement Kafka est créé avec un courtier, des rubriques et un secret d'accès valides, et que vous disposez d'un travail Kafka qui génère des messages sur cette rubrique (par exemple, kafka-sender-app), vous pouvez afficher les événements dans les journaux de votre travail Code Engine qui reçoit des messages Kafka, tels que kafka-receiver-job. Lorsque vous utilisez le travail récepteur Kafka (icr.io/codeengine/codeengine), recherchez CE_DATA dans les journaux du travail récepteur pour voir les messages reçus.

S'abonner aux événements « Kafka » pour un emploi à l'aide de la CLI

Vous pouvez utiliser l'interface de ligne de commande (CLI) pour configurer un abonnement aux événements d' Kafka, de sorte que les événements soient envoyés vers une tâche Code Engine.

Lorsque vous créez un abonnement à un événement pour un travail, une exécution de travail est créée pour chaque événement déclenché. Cette exécution de travail comporte les variables d'environnement associées au travail. L'abonnement à l'événement « Code Engine » ( Kafka ) se connecte à votre courtier de messages Kafka et envoie les variables d'environnement associées à la tâche. Pour plus d'informations sur les variables d'environnement transmises par Kafka, consultez la section « Variables d'environnement pour les événements ».

Création d'un travail Code Engine pour recevoir des événements Kafka à l'aide de l'interface de ligne de commande

Avant de commencer

  1. Créez un travail Code Engine pour agir en tant que consommateur d'événements des messages Kafka et recevoir les événements Kafka. Par exemple, créez un travail appelé kafka-receiver-job qui utilise l'image icr.io/codeengine/codeengine. Cette image est issue de codeengine.go, disponible dans le dépôt « Samples for IBM Cloud Code Engine » GitHub.

    ibmcloud ce job create -n kafka-receiver-job --image icr.io/codeengine/codeengine
    
  2. (Facultatif) Après avoir créé ce travail, exécutez la commande job get pour afficher des informations sur ce travail.

    ibmcloud ce job get -n kafka-receiver-job
    

Création d'un abonnement à un événement Code Engine Kafka pour un travail à l'aide de l'interface de ligne de commande

Vous pouvez créer un abonnement à un événement « Kafka », qui définit la relation entre le producteur (expéditeur) et le consommateur (destinataire) d’événements Kafka, à l’aide de l’interface de ligne de commande (CLI).

  1. Créez un abonnement d'événement Code Engine Kafka pour vos événements Kafka à l'aide de la commande ibmcloud ce sub kafka create. Utilisez le secret kafka-subscription-secret que vous avez créé précédemment pour accéder au courtier de messages. Spécifiez les informations de courtier en fonction des informations de données d'identification du service pour votre ressource Kafka. Pour cet exemple, vous pouvez obtenir les informations de courtier à partir de la sortie de la commande ibmcloud resource service-key myeventstream-key. Notez que vous devez spécifier une option --broker pour chaque courtier de votre rubrique. L'option --destination spécifie la ressource Code Engine qui reçoit les événements. Lorsque vous utilisez un travail de réception, vous devez également spécifier l'option --destination-type pour indiquer que la ressource est un travail, car la valeur par défaut de cette option est 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. Afficher les détails de l'abonnement à l'événement « Kafka ».

    ibmcloud ce sub kafka get -n mykafkasubscription-withjob
    

    Exemple de sortie

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

Envoi d'événements au travail de réception à l'aide de l'interface de ligne de commande

Maintenant que votre abonnement à l'événement « Kafka », qui fait référence à l'application « kafka-receiver-job », est créé, utilisez l'interface « kafka-sender-app » pour envoyer des événements de message à l'application réceptrice.

  1. Obtenez le URL public de l'application de destination, kafka-sender-app en utilisant la commande ibmcloud ce app get pour trouver le site URL de votre application.

    ibmcloud ce app get -n kafka-sender-app --output url
    

    Exemple de sortie

    https://kafka-sender-app.abcdabcdabc.us-south.codeengine.appdomain.cloud
    
  2. Exécutez l'application de fournisseur d'événements Kafka, kafka-sender-app pour envoyer des événements au travail Code Engine de destination. Appelez l'application kafka-sender-app avec curl et spécifiez des valeurs pour la rubrique et le nombre de messages. Utilisez le résultat de la commande ibmcloud ce app get pour trouver le site public URL de votre application de production d'événements. Veillez à encapsuler la valeur dans des guillemets pour vous assurer qu'elle est traitée comme une chaîne unique. Par exemple :

    curl "<public_URL_of_Kafka_sender_app>?topic=<your_topic_name>&num=<number_of_messages_to_produce>"
    

    Par exemple :

    curl "https://kafka-sender-app.abcdabcdabc.us-south.codeengine.appdomain.cloud?topic=kafka-topic1&num=1"
    
  3. Afficher les événements dans les journaux. Lorsque votre abonnement à des événements Kafka est créé avec un courtier, des rubriques et un secret d'accès valides, et que vous disposez d'une application Kafka qui génère des messages sur cette rubrique (par exemple, kafka-sender-app), vous pouvez afficher les événements dans les journaux de votre travail Code Engine de destination qui reçoit des messages Kafka, tels que kafka-receiver-job. Pour chaque message envoyé à l'aide de curl, le même nombre d'exécutions de travail est déclenché par les événements Kafka. Pour afficher les événements envoyés aux travaux, utilisez la commande ibmcloud ce jobrun logs.

    1. Utilisez la commande ibmcloud ce jobrun list pour répertorier les exécutions de travail pour le travail kafka-receiver-job.
        ibmcloud ce jobrun list --job kafka-receiver-job
        ```
    2. Utilisez la commande **`ibmcloud ce jobrun logs`** pour obtenir les journaux d'une exécution de travail spécifique.
    
    ```txt {: pre}
        ibmcloud ce jobrun logs -n kafka-receiver-job-abcde
        ```
        Exemple de sortie
    
        ```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
        ```
    Lorsque vous utilisez le travail récepteur Kafka (`icr.io/codeengine/codeengine`), recherchez `CE_DATA` dans les journaux du travail récepteur pour voir les messages reçus.
    
    Veuillez noter que les informations de journalisation relatives à l'exécution des tâches ne sont conservées que pendant une heure. Pour plus d'informations sur l'affichage des journaux pour les applications ou les travaux, voir [Affichage des journaux](/docs/codeengine?topic=codeengine-logging).
    
    
    
    

Variables d'environnement pour les événements « Kafka » transmis aux tâches

Tous les événements distribués à un travail sont reçus en tant que variables d'environnement. Ces variables d'environnement sont précédées du préfixe « CE_ » et s'appuient sur la spécification « CloudEvents ».

Chaque événement contient un certain nombre de variables d'environnement communes qui s'affichent chaque fois que l'événement est distribué à un travail. Le jeu de variables réel de chaque événement peut comporter plus d'options. Pour plus d'informations, consultez la section « Attributs de l' CloudEvent ».

Le tableau suivant présente les variables d'environnement spécifiques aux événements « Kafka ».

Variables d'environnement pour les événements
Variable Description
CE_DATA Données (corps) de l'événement.
CE_DOMAIN Partie nom de domaine de l'URL de l'application (et du projet).
CE_ID Identificateur unique de l'événement, sauf si un événement est réexécuté. Dans ce cas, il se voit attribuer le même ID.
CE_SOURCE Référence d'URI qui indique l'origine de cet événement au sein du producteur d'événement. Pour les événements Kafka, cet en-tête est au format suivant: /apis/v1/namespaces/[PROJECT_SUBDOMAIN]/kafkasources/kafkasub#[TOPIC_NAME].
CE_SPECVERSION Version de la spécification CloudEvents. Cette valeur est toujours 1.0.
CE_SUBDOMAIN Partie sous-domaine de l'URL associée à l'application (et au projet). Pour les utilisateurs qui maîtrisent Kubernetes : CE_SUBDOMAIN est mappé à l'espace de nom Kubernetes associé à votre projet.
CE_SUBJECT Le numéro et le décalage de la partition Kafka. Par exemple, partition:0#1 fait référence à la partition 0 et au décalage 1.
CE_TIME Heure à laquelle l'événement a été généré.
CE_TYPE Type de l'événement. Pour les événements Kafka, il s'agit de dev.knative.kafka.event.

Exemple de sortie

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

Affichage et mise à jour des abonnements aux événements Kafka

Vous pouvez consulter les détails de votre abonnement à l'événement « Kafka » ou mettre à jour cet abonnement.

Affichage et mise à jour des abonnements aux événements Kafka à partir de la console

  • Pour consulter les informations relatives à vos abonnements aux événements

    1. Depuis la page « Projets » d' Code Engine, accédez à votre projet.
    2. Sur la page Présentation, cliquez sur Abonnements à des événements pour afficher une liste des abonnements définis.
  • Pour mettre à jour un abonnement à un événement

    1. Accédez à la page de votre abonnement. Pour accéder à votre page d'abonnement, accédez à la page Abonnements à des événements et cliquez sur le nom de l'abonnement à mettre à jour.
    2. Mettez à jour l'abonnement. Par exemple, remplacez la rubrique d'un abonnement Kafka par une autre rubrique. Dans l'onglet Détails du courtier de messages, supprimez la rubrique existante de la section Rubriques et ajoutez le nom de votre nouvelle rubrique.
    3. Cliquez sur Sauvegarder pour sauvegarder vos modifications.

Affichage et mise à jour des abonnements aux événements Kafka à l'aide de l'interface de ligne de commande

  • Pour afficher des informations sur vos abonnements à des événements à l'aide de l'interface de ligne de commande, utilisez la commande ibmcloud ce subscription kafka get.

    ibmcloud ce sub kafka get -n mykafkasubscription
    

    Exemple de sortie

    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
    
  • Pour mettre à jour un abonnement à des événements à l'aide de l'interface de ligne de commande, utilisez la commande ibmcloud ce subscription kafka update. L'exemple suivant met à jour le nom de la rubrique.

    ibmcloud ce sub kafka update -n mykafkasubscription --topic kafka-topic2
    

    Vous pouvez utiliser la ibmcloud ce subscription kafka update commande suivante pour mettre à jour les valeurs de l'abonnement « Kafka ». Toutefois, vous ne pouvez pas modifier la valeur du groupe de consommateurs à l'aide de cette commande. Si vous souhaitez mettre à jour l'abonnement pour qu'il fasse référence à un autre sujet, assurez-vous que le sujet « Kafka » existe avant de procéder à la mise à jour de l'abonnement.

Suppression d'un abonnement à un événement « Kafka »

Lorsque vous n'avez plus besoin d'un abonnement à « Kafka », vous pouvez le supprimer.

Lorsque vous supprimez un abonnement, les informations d'identification du service pour l'instance du service « Event Streams » sont utilisées pour supprimer les groupes de consommateurs de l'instance du service « Event Streams ». Si les informations d'identification du service ont déjà été supprimées ou si elles ne sont plus valides au moment de la suppression de l'abonnement, les groupes de consommateurs ne peuvent pas être supprimés de l'instance du service « Event Streams ». Votre demande de suppression de l'abonnement à l'événement « Code Engine » ( Kafka ) a échoué.

Suppression d'un abonnement « Kafka » depuis la console

  1. Depuis la page « Projets » d' Code Engine, accédez à votre projet.
  2. Sur la page Présentation, cliquez sur Abonnements à des événements pour afficher une liste des abonnements définis.
  3. Dans la liste des abonnements, supprimez l'abonnement que vous souhaitez supprimer de votre application ou travail.

Si vous supprimez une application ou un travail associé à l'abonnement, l'abonnement n'est pas supprimé. Si vous recréez l'application ou le travail (ou une autre application ou un autre travail portant le même nom), votre abonnement se reconnecte à l'application ou au travail.

Suppression d'un abonnement à « Kafka » via l'interface de ligne de commande (CLI)

Vous pouvez supprimer un abonnement à « Kafka » en exécutant la ibmcloud ce subscription kafka delete commande suivante.

Par exemple, utilisez la commande suivante pour supprimer un abonnement « Kafka » nommé « mykafkasubscription » :

ibmcloud ce subscription kafka delete --name mykafkasubscription

Si vous supprimez une application ou un travail associé à l'abonnement, l'abonnement n'est pas supprimé. Au lieu de cela, il passe à l'état prêt de false car l'abonnement dépend de la disponibilité de l'application ou du travail. Si vous recréez l'application ou le travail (ou une autre application ou un autre travail portant le même nom), votre abonnement se reconnecte et l'état Prêt est true.

Définition d'attributs d'événements supplémentaires

Lorsque vous créez un abonnement, vous pouvez définir des attributs CloudEvent supplémentaires à inclure dans les événements générés. Ces attributs apparaissent comme tout autre attribut CloudEvent dans la distribution de l'événement. Si vous choisissez de spécifier le nom d'un attribut CloudEvent existant, il remplace la valeur d'origine incluse dans l'événement.

Pour définir des attributs supplémentaires, utilisez les options « --extension » avec la ibmcloud ce subscription kafka create commande CLI.

Pour plus d'informations, voir Puis-je utiliser d'autres spécifications CloudEvents ?