当前位置: 首页 > 知识库问答 >
问题:

Kafka客户端无法接收消息

李烨烁
2023-03-14

我在远程机器上设置了Kafka和动物园管理员。在那台机器上,我可以看到下面使用官方网站上的测试方法工作。

> bin/kafka-console-producer.sh --broker-list localhost:9092 --topic listings-incoming
This is a message
This is another message

> bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --listings-incoming --from-beginning
This is a message
This is another message

但是当我使用本地消费者脚本时,它就不起作用了:

bin/kafka-console-consumer.sh —bootstrap-server X.X.X.X:9092 —listings-incoming —from-beginning —consumer-property group.id=group2
advertised.listeners=PLAINTEXT://the.machine.ip.address:9092

我试着把它改成:

advertised.listeners=PLAINTEXT://my.client.ip.address:9092

然后运行客户端使用者脚本,它会给出错误:

[2017-08-11 15:49:01,591]获取相关id为3的元数据时警告错误:{listings-incoming=leader_not_available}(org.apache.kafka.clients.networkclient)[2017-08-11 15:49:22,106]警告引导代理10.161.128.238:9092断开连接(org.apache.kafka.clients.networkclient)[2017-08-11 15:49:22,232]获取相关id为7的元数据时警告错误:{listings-incoming=leader_not_available}-11 15:49:22,340]获取相关id为8的元数据时警告错误:{listings-incoming=leader_not_available}(org.apache.kafka.clients.networkclient)[2017-08-11 15:49:40,453]警告引导代理10.161.128.238:9092断开连接(org.apache.kafka.clients.networkclient)[2017-08-11 15:49:40,531]获取相关id为12的元数据时警告错误:{listings-incoming=leader_not_availability}

共有1个答案

梁烨
2023-03-14

您可能没有在brokers server.properties文件中正确配置adversed.listeners

摘自https://kafka.apache.org/documentation/

adversed.Listeners要发布到ZooKeeper供客户端使用的监听器(如果与上面的监听器不同)。在IaaS环境中,这可能需要与代理绑定到的接口不同。如果未设置此值,则将使用侦听器的值。

因此,如果没有设置adveredsed.listeners,并且listeners只是在监听localhost:9092或127.0.0.1:9092或0.0.0.0:9092,那么当客户机向引导服务器发出元数据请求时,就会被告知连接到localhost:9092。当客户机实际上与代理在同一台机器上运行时,这可以工作,但当远程连接时,它将失败。

您应该将adveredsed.listeners设置为运行代理的主机的完全限定域名或公共IP地址。

例如

adveredsed.listeners=plaintext://192.168.1.101:9092

 类似资料:
  • 我是一个使用python进行套接字编程的初学者。我正在做我的课程项目。我的项目的一部分需要用不同的端口发送和接收UDP消息。提供了名为robot的服务器程序,我需要编写名为student的客户端程序,它可以与机器人进行交互。因此,我不能显示服务器程序中的所有源代码。 这是服务器程序中与UDP套接字相关的部分 这是我的客户端程序。s3 是 UDP 套接字。我可以成功地向服务器程序发送消息,但无法从中

  • 我刚刚开始学习Java。我修改了服务器/客户端通信程序的客户端代码,为客户端创建了两个线程,一个是用于接收用户输入的主线程,另一个是用于接收服务器响应的inputThread。我确信服务器已经向客户机发送了响应,但是,在客户机上没有获得响应消息。 这是我的代码。有谁能帮我弄明白吗?谢谢

  • 嗨,我是Kafka的新手,我有一个快速的问题。 我实现了一个kafka生产者和消费者zookeeper和生产者在另一个服务器(192.168.10.233)中运行,消费者在另一个服务器(192.168.10.234)中运行,两者都是本地连接的 我还从外面查了192.168.10.233:9092,港口是否没有被任何东西堵塞。

  • 问题内容: 我要进行最简单的解释。我的Java TCP项目有一个服务器和三个客户端。 服务器具有一个ClientThread。每个客户端都有一个ServerThread和一个UserThread。 工作流程为: 1.客户端(例如,client_0)的UserThread获取用户输入,然后将消息发送到服务器。 2.服务器的ClientThread捕获来自client_0的消息,并将另一条消息发送到另

  • 问题内容: 我要进行最简单的解释。我的Java TCP项目有一个服务器和三个客户端。 服务器具有一个ClientThread。每个客户端都有一个ServerThread和一个UserThread。 工作流程为: 1.客户端(例如,client_0)的UserThread获取用户输入,然后将消息发送到服务器。 2.服务器的ClientThread捕获来自client_0的消息,并将另一条消息发送到另

  • 我一直在努力通过Smack和Openfire服务器与XMPP聊天。我的问题如下: 每当一个用户向另一个用户发送消息时,该消息就会在另一个用户处正确接收。但是任何回复都不会出现在第一条消息的发件人处。因此,用户1成功地发送给用户2。然后,用户2无法向用户1发送任何回复。另一方面,如果我重新启动并让用户再次登录,则用户2可以发送给用户1,但反之亦然。 我想说的是,只有聊天的发起者才能发送消息,接收者不