Java 卡夫卡从多节点使用单个主题

Java 卡夫卡从多节点使用单个主题,java,apache-kafka,apache-zookeeper,kafka-consumer-api,Java,Apache Kafka,Apache Zookeeper,Kafka Consumer Api,我有一个Kafka消费者应用程序运行在两个不同的设备上,试图使用同一个主题topic x,每个设备都有自己的代理。这两个经纪人与同一个动物园管理员有联系 卡夫卡有可能采用这种架构吗?我是否能够在不同的设备上使用不同的代理使用相同的主题?我试图实现这一点,但我得到了这个错误LEADER\u NOT\u AVAILABLE在卡夫卡,经纪人不消费话题。代理协作形成一个集群,该集群作为一个整体承载和服务多个主题,同时提供复制和高可用性。代理接收并存储生产者发送给每个特定主题的消息,并允许消费者使用这些

我有一个Kafka消费者应用程序运行在两个不同的设备上,试图使用同一个主题
topic x
,每个设备都有自己的代理。这两个经纪人与同一个动物园管理员有联系


卡夫卡有可能采用这种架构吗?我是否能够在不同的设备上使用不同的代理使用相同的主题?我试图实现这一点,但我得到了这个错误
LEADER\u NOT\u AVAILABLE

在卡夫卡,经纪人不消费话题。代理协作形成一个集群,该集群作为一个整体承载和服务多个主题,同时提供复制和高可用性。代理接收并存储生产者发送给每个特定主题的消息,并允许消费者使用这些主题的各种语义(请参见“消费者组”)

我不确定您正在处理什么设备,但典型的设置是拥有一个Kafka代理群集(由ZooKeeper群集支持),并让您的应用程序、生产者和消费者通过提供代理主机名列表连接到此Kafka群集

根据您的需要、主题数量、制作人/消费者数量等,您可以调整ZooKeeper和Kafka集群的大小。一个良好的开端是每个节点有3个,因此,通过能够在不丢失数据的情况下丢失一个节点,您至少可以获得一定程度的高可用性。不过,对于开发或只是玩玩,由单个节点ZooKeeper集群支持的单个代理Kafka集群可以正常工作

最后,如果有多台设备使用同一主题,则必须确定是希望它们接收相同的消息,还是希望它们共享负载。如果是第一种情况,您需要确保他们作为两个不同的消费群体消费。对于后者,您需要确保他们属于同一消费者组,这样他们就不会收到相同的消息


要了解更多信息,请查看Kafka的文档。

谢谢,我是build self project,我只想运行一个ZK,在每个设备上运行他的代理,我想使用相同的主题,我可以这样做吗?不。您可以运行一个ZK节点和一个Kafka代理(可能在同一台机器上),然后让您的设备连接到该代理以使用该主题。但这显然不是HA系统。