【问题标题】:connect to a heroku kafka instance with kafka-python from outside heroku从heroku外部使用kafka-python连接到heroku kafka实例
【发布时间】:2019-01-15 10:14:44
【问题描述】:

我已经设置了一个 heroku kafka 实例,我正在尝试使用 python 消费者连接到它。我通过heroku config -s > .env在一个名为.env的文件中拥有heroku环境,然后在运行这个python程序之前加载和导出它:

import os

from kafka import KafkaConsumer

for variable in ['KAFKA_TRUSTED_CERT', 'KAFKA_CLIENT_CERT', 'KAFKA_CLIENT_CERT_KEY']:
    with open(f'{variable}.txt', "w") as text_file:
        print(os.environ[variable], file=text_file)

consumer = KafkaConsumer('test-topic',
                         bootstrap_servers=os.environ['KAFKA_URL'],
                         security_protocol="SSL",
                         ssl_certfile="KAFKA_CLIENT_CERT.txt",
                         ssl_keyfile="KAFKA_CLIENT_CERT_KEY.txt"
)
for msg in consumer:
    print (msg)

我找不到任何看起来可以从变量加载证书的选项,所以我在启动程序时将它们全部放在文件中。

当我运行程序时,它会创建临时文件并且不会抱怨,但不会打印任何消息。

当我像这样使用 heroku cli 写主题时

heroku kafka:topics:write test-topic "this is a test"

python 客户端不打印消息,但是我可以通过 go 看到消息

heroku kafka:topics:tail test-topic

有人知道我在 python 消费者配置中缺少什么吗?

【问题讨论】:

  • 你找到解决办法了吗?我有同样的问题,但还没有弄清楚。
  • 不,我只是出于几个原因最终使用了不同的 kafka 服务。
  • 是的,太烦人了,还没有找到合适的例子。谢谢顺便说一句。

标签: python heroku apache-kafka


【解决方案1】:

在 Heroku Kafka 官方文档中:

https://devcenter.heroku.com/articles/kafka-on-heroku#using-kafka-in-python-applications

它指出使用 Kafka 助手是有益的。如果你看源代码:

https://github.com/heroku/kafka-helper/blob/master/kafka_helper.py

可以看到他们正在将 Kafka 变量写入文件并创建 ssl_context。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-06
    • 1970-01-01
    • 2018-01-04
    • 1970-01-01
    • 1970-01-01
    • 2019-11-26
    • 2020-06-02
    • 2019-03-26
    相关资源
    最近更新 更多