Git Publisher如何在Apache Kafka中将消息发布到主题?

Git Publisher如何在Apache Kafka中将消息发布到主题?,git,apache-kafka,apache-kafka-connect,pykafka,Git,Apache Kafka,Apache Kafka Connect,Pykafka,我是阿帕奇·卡夫卡的新手。我不理解ApacheKafka中主题和分区的剖析,以及制作者将数据推送到分区的方式 考虑一个场景,我有两个生产者PR1、PR2和三个经纪人B1、B2、B3。一个主题T1和三个分区P1、P2、P3被分割到三个代理上。现在,第一个生产者PR1与Zookeeper协调,找到代理并将消息(例如,日志服务器以每秒1条记录的速度推送其日志数据)推送到T1-P1,并将偏移量设置为0。我的疑问是第二个记录是如何被打破的。它会推送到分区P2还是分区P3?或者第一条记录本身并行地推送到所有

我是阿帕奇·卡夫卡的新手。我不理解ApacheKafka中主题和分区的剖析,以及制作者将数据推送到分区的方式

考虑一个场景,我有两个生产者PR1、PR2和三个经纪人B1、B2、B3。一个主题T1和三个分区P1、P2、P3被分割到三个代理上。现在,第一个生产者PR1与Zookeeper协调,找到代理并将消息(例如,日志服务器以每秒1条记录的速度推送其日志数据)推送到T1-P1,并将偏移量设置为0。我的疑问是第二个记录是如何被打破的。它会推送到分区P2还是分区P3?或者第一条记录本身并行地推送到所有三个分区

new ProducerRecord<String, String>("my-topic", "message key", "message")

现在,第二个发布服务器已加入并将消息发布到分区。消息推送到哪里,它会推送到P1吗?如果是这种情况,PR1已经将消息推送到P1,PR1和PR2是否会同时将消息背靠背地追加到P1,从而创建偏移量0,1,2,3,4,5

有多个标准来决定哪条消息发送到哪个分区

new ProducerRecord<String, String>("my-topic", "message key", "message")
1。带有键的消息

当您使用如下键创建Kafka消息时,它使用默认的散列分区器来查找分区。默认分区器基于消息键创建哈希代码并查找相应的分区

new ProducerRecord<String, String>("my-topic", "message key", "message")
新产品记录(“我的主题”、“消息键”、“消息”)
2。不带消息键的消息

它再次使用默认分区器来查找随机分区器

new ProducerRecord<String, String>("my-topic", "message")
新产品记录(“我的主题”、“消息”)
3。带有分区号的消息

当您创建消息时,您还可以手动传递分区号,因此消息将发送到该分区

new ProducerRecord<String, String>("my-topic", "message key", "message")
4。使用自定义分区器

您还可以编写一个可以发言的分区器类来决定消息必须转到哪个分区

有关Producer API的更多信息,请参见

本文提供了有关如何创建自定义分区器和默认哈希分区器的详细信息

new ProducerRecord<String, String>("my-topic", "message")