confluent-kafka-python用户无法阅读消息

时间:2019-10-07 20:26:24

标签: python ssl apache-kafka confluent confluent-kafka

我在使用confluent-kafka的python库时遇到了与Kafka消费者有关的问题。

上下文
我在AWS EC2上有一个需要使用的Kafka主题。

场景
使用者脚本(my_topic_consumer.py)使用confluent-kafka-python创建使用者(如下所示)并订阅“ my_topic”主题。问题是使用者无法从Kafka群集中读取消息。

满足所有必需的安全步骤:
1. SSL-消费者和代理的安全协议。
2.已将消费者EC2 IP块添加到群集的安全组中。

#my_topic_consumer.py
from confluent_kafka import Consumer, KafkaError

c = Consumer({
  'bootstrap.servers': 'my_host:my_port',
  'group.id': 'my_group',
  'auto.offset.reset': 'latest',
  'security.protocol': 'SSL',
  'ssl.ca.location': '/path/to/certificate.pem'
})

c.subscribe(['my_topic'])

try:
  while True:
    msg = c.poll(5)
      if msg is None:
        print('None')
        continue
      if msg.error():
        print(msg)
        continue
      else:
        #process_msg(msg) - Writes messages to a data file.

except KeyboardInterrupt:
  print('Aborted by user\n')

finally:
  c.close()

URLS
经纪人主机:my_host
港口:my_port
组ID:my_group

控制台命令
工作-运行控制台用户脚本,我可以看到数据:

kafka-console-consumer --bootstrap-server my_host:my_port --consumer.config client-ssl.properties --skip-message-on-error --topic my_topic | jq

注意:client-ssl.properties:指向包含证书的JKS文件。

在Kafka集群上进行进一步调试(将使用者与EC2实例分开),我看不到我的使用者通过group_id(my_group)进行的任何注册:

kafka-consumer-groups --botstrap-server my_host:my_port --command-config client-ssl.properties --descrive --group my_group

这使我相信使用者没有在集群上注册,那么SSL握手是否可能失败?如何从消费者方面在python中检查此内容?

注意
-群集位于代理(公司)的后面,但是我在测试之前确实在使用者EC2上运行了代理。
-通过pm2运行了该过程,但没有看到任何错误日志,例如req超时等。

有什么方法可以确定消费者创建是否确实失败并找出根本原因?感谢您的帮助和反馈。

0 个答案:

没有答案