【问题标题】:Cant send message by using pykafka无法使用 pykafka 发送消息
【发布时间】:2019-11-27 04:21:51
【问题描述】:

我正在使用 pykafka,我可以获取主题名称但无法发送消息。我的代码如下所示

client = KafkaClient(hosts='xx.xx.xx.xx:9092')
topic = client.topics['test']
producer = topic.get_sync_producer()
producer.produce(b"message") 

我收到此错误消息

raise ProduceFailureError("Delivery report not received after timeout")
pykafka.exceptions.ProduceFailureError: Delivery report not received after timeout 

【问题讨论】:

  • 请分享您的代理配置
  • broker.id=1 listeners=PLAINTEXT://localhost:9092 我发送到外部 IP 消息消费者 borker 配置在这里。我有一个经纪人。

标签: apache-kafka kafka-producer-api pykafka


【解决方案1】:
    broker.id=1
    listeners=PLAINTEXT://localhost:9092 

我正在向外部 IP 发送消息

如果您正在设置hosts=some.external.IP:9092,那么您需要使用advertised.listeners=PLAINTEXT://some.external.IP:9092 编辑Kafka 属性并使用listeners=PLAINTEXT://:9092 来监听外部接口。

列出主题使用不同的协议,这就是它可以正常工作的原因。

【讨论】:

  • 你的意思是我需要为生产者写成 client = KafkaClient(hosts='externalmachineIP:9092')。而对于消费者来说,adverted.listeners=PLAINTEXT://locahost:9092 和 listeners=PLAINTEXT://localhost:9092
  • 您的代码不需要更改。需要更新server.properties文件并重启kafka
猜你喜欢
  • 1970-01-01
  • 2014-06-27
  • 1970-01-01
  • 1970-01-01
  • 2021-12-10
  • 2012-10-03
  • 1970-01-01
  • 2023-04-05
  • 2021-09-29
相关资源
最近更新 更多