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
-
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 -
Téléchargez et installez l'interface de ligne de commandeCode Engine.
ibmcloud plugin install code-engine -f -
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 -
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
-
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éemyeventstream.ibmcloud resource service-instance-create myeventstream messagehub lite us-south -
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 myeventstreamExemple 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: tokenNotez les valeurs de
user,passwordetkafka-brokers_saslpour votre clé de service. Vous avez besoin de ces informations lorsque vous configurez votre abonnement Code Engine Kafka. Les valeurs depasswordetapikeysont identiques dans la clé de service de votre instance de service Event Streams. Vous pouvez également utiliser la commandeibmcloud resource service-key myeventstream-keypour extraire les informations de clé de service. -
Initialisez le plug-in Event Streams relatif à votre instance de service Event Streams.
ibmcloud es init --instance-name myeventstream -
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
- Déterminez le projet Code Engine que vous souhaitez utiliser et assurez-vous que ce projet est sélectionné. Voir Création et utilisation d'un projet.
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é
usernameavec la valeuruserré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 esttoken. 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é
passwordavec la valeurapikeyré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é
usernameavec la valeuruserré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 esttoken. 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é
passwordavec la valeurapikeyré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.
-
Créez une application Code Engine appelée
kafka-sender-appavec les informations suivantes.- Référencez l'image de conteneur
icr.io/codeengine/kafka-senderpour cette application. Cette image est générée à partir desender.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 pourpasswordetBROKERS. - Dans la section Variables d'environnement (facultatives), ajoutez les variables d'environnement suivantes.
- 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. - Ajoutez une autre variable d'environnement pour référencer le secret complet,
kafka-subscription-secret. Ce secret contient les données d'identification pourpassword.
- Ajoutez une variable d'environnement littérale,
- (Facultatif) Dans la section Ressources & mise à l'échelle, spécifiez
1pour 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. - Cliquez sur Créer pour créer et déployer votre application.
- Référencez l'image de conteneur
-
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.
-
Créez une application Code Engine appelée
kafka-sender-appavec les informations suivantes.- Spécifiez l'option
--imagepour référencer l'image de conteneuricr.io/codeengine/kafka-sender. Cette image est générée à partir desender.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'identificationpasswordqui sont stockées dans votrekafka-subscription-secretet requiert la variable d'environnementBROKERS. - Spécifiez l'option
--env-from-secretpour référencer le secret complet,kafka-subscription-secret, qui contient les données d'identificationpassword. - Spécifiez l'option
--envpour 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 - Spécifiez l'option
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
- 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-appqui utilise l'imageicr.io/codeengine/kafka-receiver. Cette image est générée à partir dereceiver.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. - 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
- Déterminez le projet Code Engine que vous souhaitez utiliser et assurez-vous que ce projet est sélectionné. Voir Création et utilisation d'un projet.
Suivez les étapes ci-dessous pour créer un abonnement aux événements « Kafka » pour une application depuis la console.
- Depuis la page « Projets » d' Code Engine, accédez à votre projet.
- Sur la page Présentation, cliquez sur Abonnements à des événements.
- Sur la page Abonnements à des événements, cliquez sur Créer pour créer votre abonnement.
- Dans la page Créer un abonnement à un événement, sélectionnez la vignette
Event Streams / Kafkapour spécifier le type d'événement. - Pour Général, indiquez un nom pour l'abonnement
Event Streams / Kafka. Cliquez sur Suivant pour continuer. - Pour plus d'informations sur le Message Broker,
- 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 servicemyeventstream-key. Vous pouvez trouver les courtiers de l'instance de service dans Event Streams dans la zoneKafka_brokers_sasl. - 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
usernameetpassword. Les valeurs deusernameetpassworddoivent correspondre aux valeurs des données d'identification du service pour l'instance Kafka ou Event Streams. Par exemple, la valeur deusernameest la valeur deuserqui est répertoriée dans les détails des données d'identification du service dans l'instance de service Event Streams. La valeur depasswordest la valeur deapikeyqui 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-secretexistant qui a été créé précédemment.
- 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
- 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. - (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.
- Cliquez sur Suivant pour continuer.
- 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
- 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-appqui référence l'imageicr.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. - 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.
-
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.
-
(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.
-
Une fois la journalisation lancée, appelez l'application
kafka-sender-appaveccurlet indiquez le URL public dukafka-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
-
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-app2qui utilise l'imageicr.io/codeengine/kafka-receiver. Cette image est générée à partir dereceiver.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 1Par 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. -
Après avoir déployé cette application, exécutez la commande
app getpour confirmer que l'application a le statutready.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).
-
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 secretkafka-subscription-secretque 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 commandeibmcloud resource service-key myeventstream-key. Notez que vous devez spécifier une option--brokerpour chaque courtier de votre rubrique. L'option--destinationspé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 -
Afficher les détails de l'abonnement à l'événement « Kafka ».
ibmcloud ce sub kafka get -n mykafkasubscriptionExemple 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.
-
Obtenez l'adresse publique URL de l'application de destination,
kafka-sender-appen utilisant la commandeibmcloud ce app getavec l'option--output urlpour trouver le URL de votre application.ibmcloud ce app get -n kafka-sender-app --output urlExemple de sortie
https://kafka-sender-app.abcdabcdabc.us-south.codeengine.appdomain.cloud -
Exécutez l'application de fournisseur d'événements Kafka,
kafka-sender-apppour envoyer des événements à l'application Code Engine de destination. Appelez l'applicationkafka-sender-appaveccurlet spécifiez des valeurs pour la rubrique et le nombre de messages. Utilisez la sortie de laibmcloud ce app getcommande 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" -
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 quekafka-receiver-app. Lorsque vous utilisez l'application de récepteur Kafka (icr.io/codeengine/kafka-receiver), recherchezEvent datadans les journaux de l'application de récepteur pour voir les messages reçus.ibmcloud ce app logs -n kafka-receiver-app2Exemple 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: 1Notez 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
| 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
- 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 decodeengine.go, disponible dans le dépôt « Samples for IBM Cloud Code Engine » GitHub. Cet exemple ne nécessite aucune variable d'environnement. - 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
- Déterminez le projet Code Engine que vous souhaitez utiliser et assurez-vous que ce projet est sélectionné. Voir Création et utilisation d'un projet.
Suivez les étapes ci-dessous pour créer un abonnement aux événements « Kafka » pour une application depuis la console.
- Depuis la page « Projets » d' Code Engine, accédez à votre projet.
- Sur la page Présentation, cliquez sur Abonnements à des événements.
- Sur la page Abonnements à des événements, cliquez sur Créer pour créer votre abonnement.
- Dans la page Créer un abonnement à un événement, sélectionnez la vignette
Event Streams / Kafkapour spécifier le type d'événement. - Pour Général, indiquez un nom pour l'abonnement
Event Streams / Kafka. Cliquez sur Suivant pour continuer. - Pour plus d'informations sur le Message Broker,
- 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 servicemyeventstream-key. - 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
usernameetpassword. Les valeurs deusernameetpassworddoivent correspondre aux valeurs des données d'identification du service pour l'instance Kafka ou Event Streams. Par exemple, la valeur deusernameest la valeur deuserqui est répertoriée dans les détails des données d'identification du service dans l'instance de service Event Streams. La valeur depasswordest la valeur deapikeyqui 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-secretexistant qui a été créé précédemment.
- 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
- 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. - (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.
- Cliquez sur Suivant pour continuer.
- 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
- 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
jobcomme type de composant et utilisez le travailkafka-receiver-jobqui référence l'imageicr.io/codeengine/codeenginecomme 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. - 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.
-
Démarrez la journalisation du travail récepteur pour afficher les journaux de travail à partir de la console afin d'afficher les événements.
-
(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.
-
Une fois la journalisation lancée, appelez l'application
kafka-sender-appaveccurlet indiquez le URL public dukafka-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
-
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-jobqui utilise l'imageicr.io/codeengine/codeengine. Cette image est issue decodeengine.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 -
(Facultatif) Après avoir créé ce travail, exécutez la commande
job getpour 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).
-
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 secretkafka-subscription-secretque 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 commandeibmcloud resource service-key myeventstream-key. Notez que vous devez spécifier une option--brokerpour chaque courtier de votre rubrique. L'option--destinationspé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-typepour indiquer que la ressource est un travail, car la valeur par défaut de cette option estapp.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 -
Afficher les détails de l'abonnement à l'événement « Kafka ».
ibmcloud ce sub kafka get -n mykafkasubscription-withjobExemple 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.
-
Obtenez le URL public de l'application de destination,
kafka-sender-appen utilisant la commandeibmcloud ce app getpour trouver le site URL de votre application.ibmcloud ce app get -n kafka-sender-app --output urlExemple de sortie
https://kafka-sender-app.abcdabcdabc.us-south.codeengine.appdomain.cloud -
Exécutez l'application de fournisseur d'événements Kafka,
kafka-sender-apppour envoyer des événements au travail Code Engine de destination. Appelez l'applicationkafka-sender-appaveccurlet spécifiez des valeurs pour la rubrique et le nombre de messages. Utilisez le résultat de la commandeibmcloud ce app getpour 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" -
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 quekafka-receiver-job. Pour chaque message envoyé à l'aide decurl, 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 commandeibmcloud ce jobrun logs.- Utilisez la commande
ibmcloud ce jobrun listpour répertorier les exécutions de travail pour le travailkafka-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). - Utilisez la commande
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 ».
| 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
- Depuis la page « Projets » d' Code Engine, accédez à votre projet.
- 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
- 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.
- 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.
- 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 mykafkasubscriptionExemple 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-topic2Vous pouvez utiliser la
ibmcloud ce subscription kafka updatecommande 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
- Depuis la page « Projets » d' Code Engine, accédez à votre projet.
- Sur la page Présentation, cliquez sur Abonnements à des événements pour afficher une liste des abonnements définis.
- 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 ?