Spring boot Spring boot和Apache Kafka通过Docker组合抛出标题不可用,发送失败错误

Spring boot Spring boot和Apache Kafka通过Docker组合抛出标题不可用,发送失败错误,spring-boot,docker,apache-kafka,Spring Boot,Docker,Apache Kafka,我只是想通过docker compose实现Spring boot和Apache Kafka。 首先,我通过以下链接安装了ApacheKafka Docker映像:然后通过如下所示的命令安装jplock/zookeeper "message": "Send failed; nested exception is org.apache.kafka.common.errors.TimeoutException: Topic k-topic not present in

我只是想通过docker compose实现Spring boot和Apache Kafka。 首先,我通过以下链接安装了ApacheKafka Docker映像:然后通过如下所示的命令安装jplock/zookeeper

"message": "Send failed; nested exception is org.apache.kafka.common.errors.TimeoutException: Topic k-topic not present in metadata after 60000 ms."
docker run-d-name zookeeper-publish 2181:2181 jplock/zookeeper:latest

然后我运行这个命令(
docker ps
)来确定是否所有图像都工作。他们所有这些图像的状态都是上升的。这就是它们工作完美的原因

然后我运行应用程序并通过邮递员发送消息。帖子url是
localhost:8080/kafkamessage

JSON对象在这里

{
    "message" : "Hello World"
}
当我发送请求时,它抛出一个错误,如下所示

"message": "Send failed; nested exception is org.apache.kafka.common.errors.TimeoutException: Topic k-topic not present in metadata after 60000 ms."
除此之外,我定义了一个自动创建的主题,但消费者和生产者无法在控制台中生成该主题

[Consumer clientId=consumer-k-group-1, groupId=k-group] Error while fetching metadata with correlation id 728 : {k-topic=LEADER_NOT_AVAILABLE}
[Producer clientId=producer-1] Error while fetching metadata with correlation id 681 : {k-topic=LEADER_NOT_AVAILABLE}
这是我的错误

以下是链接:

我如何解决这个问题

第1条
docker run--rm--name zookeeper-p 2181:2181 jplock/zookeeper

术语2 (错误所在)

docker run--rm-p 9092:9092-e KAFKA_advised_HOST_NAME=127.0.0.1--link zookeer:zookeer ches/KAFKA

ches/kafka
自2017年以来未进行任何修改,也未采用卡夫卡的最新改进进行维护

第三学期 第四学期 制片人工作了,他也是


请不要使用Spotify图像。它没有维护,并且使用非常旧的版本Kafka@OneCricketeer问题是否因使用Spotify而触发引发错误。我不这么认为。如果
播发的\u主机
播发的\u端口
不是配置它的正确变量(而且这两个都是不推荐的卡夫卡配置),可能会发生这种情况。此外,您已经过度编写了容器的
命令
,因此不清楚Kafka(或Zookeeper)进程是否真的启动了。。。如果您需要创建一个主题,那么在Spring中使用
@Bean NewTopic
@OneCricketeer创建主题。我应该使用哪些变量来代替docker-compose.yml中的播发主机和播发端口?我认为主题自动生成是因为自动创建主题。如果你不介意的话,你能看看我的截图吗?我想知道问题出在哪里。只有wurstmeister图像可以创建带有环境变量的主题。在大多数卡夫卡环境中,通常禁用自动主题创建。您应该参考链接的重复问题来解决您的问题,或者阅读“我想使用邮递员发送请求”,那么我如何更改term4部分?这是一个
POST
请求,请求正文类型为
application/json
,包含请求正文
{“message”:“Hello World”}
。url是
localhost:8080/kafkamessage
这应该足以将您的请求传输给邮递员。我无法实现term1。错误是来自守护进程的docker:error响应:Conflict。容器名“/zookeeper”已由容器“b70ebdb369dd98987f95c3bf4897a5d1afaa653ccd7ae49a80f6566b5bc5ea0f”使用。您必须删除(或重命名)该容器才能重新使用该名称。@Michael您已经运行了同名的容器。如果要重新开始,请停止所有其他正在运行的容器。。否则,跳过it@OneCricketeer我删除了所有的命令,现在试着用你的方式执行你的命令。
curl -X POST -H 'Content-Type: application/json' --data '{"message" : "Hello World"}' localhost:8080/kafkamessage
$ kafkacat -C -t k-topic -b localhost:9092 -o beginning
{"message":"Hello World","id":"ef0e7883-640c-473b-9b3d-7919d59594a1","messageDate":[2021,2,11,13,10,30,11737000]}