web-dev-qa-db-ja.com

Kafka-Pythonは認識されないBrokerversionエラーを上げます

_kafka-python_パッケージでKafkaproducerを構築するとき、このエラーが発生しています。

_[ERROR] UnrecognizedBrokerVersion: UnrecognizedBrokerVersion
Traceback (most recent call last):
  File "/var/lang/lib/python3.7/imp.py", line 234, in load_module
    return load_source(name, filename, file)
  File "/var/lang/lib/python3.7/imp.py", line 171, in load_source
    module = _load(spec)
  File "<frozen importlib._bootstrap>", line 696, in _load
  File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 728, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "/var/task/kafka/producer/kafka.py", line 381, in __init__
    **self.config)
  File "/var/task/kafka/client_async.py", line 240, in __init__
    self.config['api_version'] = self.check_version(timeout=check_timeout)
  File "/var/task/kafka/client_async.py", line 908, in check_version
    version = conn.check_version(timeout=remaining, strict=strict, topics=list(self.config['bootstrap_topics_filter']))
  File "/var/task/kafka/conn.py", line 1228, in check_version
    raise Errors.UnrecognizedBrokerVersion()
_

コードは次のとおりです。

_from kafka import KafkaProducer
producer = KafkaProducer(bootstrap_servers=os.environ.get('KAFKA_Host', 'localhost:9092'))
_

Python 3.7とAWS MSKクラスタを使用しています。

4
Rene B.

_kafka-python_ libメソッドを使用してたくさんのオプションパラメータがあります。これは私がAzureサーバーを聴くことができた最近の作業スクリプトです:

_import kafka  # pip install kafka-python

consumer = kafka.KafkaConsumer("test-topic",
    bootstrap_servers=["test-server.servicebus.windows.net:9093"],
    auto_offset_reset='earliest',
    enable_auto_commit=True,
    group_id='$Default',
    sasl_mechanism='PLAIN',
    sasl_plain_password=os.environ["KAFKA_PASSWORD"],
    sasl_plain_username='$ConnectionString',
    security_protocol='SASL_SSL',
    value_deserializer=lambda x: x.decode('utf-8'))

print(datetime.datetime.now())
for message in consumer:
    message_dict = json.loads(message.value)
    print(datetime.datetime.now())
    print("%s" % (json.dumps(message_dict,indent=4)))
_

それは粗いですが効果的です。 java-wrapped-in-bash Kafkaデモコンシューマ)よりも簡単です https://kafka.apache.org/quickstart コンフィグファイルと環境を追加する必要があるページ変数.

1
MarkHu