第一步:
我遵循了本指南中的一些步骤,创建了一个zookeeper容器,并将其连接到一个kafka容器,以便它们可以通过本地端口相互通信。我还创建了一个带有1个分区的主题“foo”,并在其中使用docker命令发送了42条消息。据我所知,在我的本地操作系统上有一个Kafka端口(localhost:29092)这是暴露于生产和收听信息。
docker运行zookeeper容器的命令:
docker run -d --net=host --name=zookeeper -e ZOOKEEPER_CLIENT_PORT=32181 confluentinc/cp-zookeeper:4.0.0
docker运行kafka容器的命令:
docker run -d --net=host --name=kafka -e KAFKA_ZOOKEEPER_CONNECT=localhost:32181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://localhost:29092 -e KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR=1 confluentinc/cp-kafka:4.0.0
第二步:
接下来,我将尝试在springboot引导api中连接我的kafka生产者和消费者脚本,而不使用任何docker组合到这个端口,如下所示(我想证明这两个容器是否能够像我的主机操作系统上的普通kafka分发器一样工作):
public class KafkaProducer {private static final String TOPIC = "foo";...}
public class KafkaConsumer { @KafkaListener(topics = "foo", groupId = "group1")...}
spring.kafka.producer.bootstrap-servers: localhost:29092
spring.kafka.consumer.bootstrap-servers: localhost:29092
因此,我得到了以下错误:
2020-12-23 14:38:45.937 WARN 14056 --- [ntainer#0-0-C-1] org.apache.kafka.clients.NetworkClient : [Consumer clientId=consumer-group1-1, groupId=group1] Connection to node -1 (localhost/127.0.0.1:29092) could not be established. Broker may not be available.
2020-12-23 14:38:45.937 WARN 14056 --- [ntainer#0-0-C-1] org.apache.kafka.clients.NetworkClient : [Consumer clientId=consumer-group1-1, groupId=group1] Bootstrap broker localhost:29092 (id: -1 rack: null) disconnected.
你能告诉我哪里错了吗?我对java、Kafka和docker完全陌生。我应该读些什么来更好地理解它?
1条答案
按热度按时间pkmbmrz71#
出于某种原因,它与新版指南配合使用。
https://docs.confluent.io/platform/current/quickstart/ce-docker-quickstart.html