Kafka可以访问主题列表,但不能产生任何消息

时间:2018-12-20 22:26:20

标签: amazon-web-services amazon-ec2 apache-kafka kafka-producer-api pykafka

我在EC2实例中安装了一个单节点Kafka-2.11,安全组已正确设置,可以通过telnet命令从本地计算机访问端口。

new BroadcastChannel('myapp').addEventListener('message', function(e){
  console.log(e.data) 
})

这将获得所有主题列表,而不会出现任何错误。

此外,当我登录EC2实例并通过CLI或python创建生产者和使用者时,它工作正常。但是在我的本地计算机上,当我尝试通过PyKafka将消息发布到EC2中的Kafka代理时,会引发以下错误。

from pykafka import KafkaClient
kafka_host = 'X.X.X.X:9092'
client = KafkaClient(kafka_host)
print(client.topics)
topic = client.topics["test"]
producer = topic.get_producer(sync=True)
producer.produce(b"your message")

服务配置如下

SocketDisconnectedError                   Traceback (most recent call last) <ipython-input-10-0bfe24be5251> in <module>
      6 
      7 producer = topic.get_producer(sync=True)
----> 8 producer.produce(b"your message")

~/venvs/lib/python3.7/site-packages/pykafka/producer.py in produce(self, message, partition_key, timestamp)
    411                 raise ProduceFailureError("Delivery report not received after timeout")
    412             if exc is not None:
--> 413                 raise exc
    414         self._raise_worker_exceptions()
    415         return msg

~/venvs/lib/python3.7/site-packages/pykafka/producer.py in
_send_request(self, message_batch, owned_broker)
    492 
    493         try:
--> 494             response = owned_broker.broker.produce_messages(req)
    495             if self._required_acks == 0:  # and thus, `response` is None
    496                 self._mark_as_delivered(owned_broker, message_batch, req)

~/venvs/lib/python3.7/site-packages/pykafka/broker.py in wrapped(self,
*args, **kwargs)
     42     def wrapped(self, *args, **kwargs):
     43         if self._req_handler is None:
---> 44             raise SocketDisconnectedError
     45         return fn(self, *args, **kwargs)
     46     return wrapped

SocketDisconnectedError:

0 个答案:

没有答案