From 9443d75e035b83d8e8b6904007404aa6fe7901a6 Mon Sep 17 00:00:00 2001 From: christofluethi Date: Wed, 22 Nov 2023 16:12:38 +0100 Subject: [PATCH] * add info for kafka cli (only available in kafka stack and not redpanda) * add link to build items in slides --- content/en/docs/08.0/82_kafka.md | 18 ++++++++++++------ content/en/slides/slides.pdf | Bin 4446157 -> 4446427 bytes 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/content/en/docs/08.0/82_kafka.md b/content/en/docs/08.0/82_kafka.md index 7b60627b..0b52b75b 100644 --- a/content/en/docs/08.0/82_kafka.md +++ b/content/en/docs/08.0/82_kafka.md @@ -88,6 +88,17 @@ mvn io.quarkus:quarkus-maven-plugin:{{% param "quarkusVersion" %}}:create \ -DprojectVersion=1.0.0 ``` +{{% alert color="warning" title="Quarkus DEV-UI in producer" %}} +As we do not include resteasy in your producer the producer does not have a ui at all and is not able to serve the dev-ui. If you want to use the quarkus dev-ui in your producer you have to add the following dependency to your `pom.xml`: +``` + + io.quarkus + quarkus-vertx-http + +``` +{{% /alert %}} + + Next, create the SensorMeasurement in both project. ```java @@ -152,16 +163,11 @@ mp.messaging.outgoing.data.value.serializer=io.quarkus.kafka.client.serializatio We define the connector which we are going to use to communicate, the topic in which the data will be sent to and the serializer for the value. -To check if your producer is producing data correctly, you can use the kafka container with its console utilities! Inside the kafka container you can use the script `bin/kafka-console-consumer.sh` with the parameters `--bootstrap-server localhost:9092 --topic data --from-beginning` to read the messages inside the `data` topic. - -{{% details title="Hint" %}} - +To check if your producer is producing data correctly, you can use basic tooling available in your kafka container or use the quarkus dev-ui (remember to add the `quarkus-vertx-http` dependency in your producer). You need to find the name of your kafka container using `docker ps`. Be aware that this will only work if you are using the kafka stack and not the dev-services. ```s docker exec -it docker_kafka_1 bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic data --from-beginning ``` -{{% /details %}} - ### {{% param sectionnumber %}}.4: Consuming messages diff --git a/content/en/slides/slides.pdf b/content/en/slides/slides.pdf index 2c1812fec1b1fccee21e2fa27df6ca123c9ea219..282ba004b88aed78905b0b6e4b2055e94a1bda9c 100644 GIT binary patch delta 30745 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