我在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: