我想扩展卡夫卡DefaultPartitioner来做一个定制的。但是,我发现无法访问消息头,因为分区应该基于当前的值。
编辑1:任务不是基于键而是基于标题中包含的另一个整数选择一个分区。
发布于 2022-01-28 13:14:37
不能访问自定义分区程序类中的标头。但是,也许您可以根据头值手动创建ProducerRecord。
ProducerRecord有许多重载的构造函数定义。其中一些有分区争论。在这里,您可以指定分区号,这表明您的ProducerRecord将在哪个分区。
例如ProducerRecord<String,String> rec = new ProducerRecord(topic, partitionNo, key, value);
否则,您必须将特定的头值嵌入到键或值对象中,然后在partitioner类中访问它。
https://stackoverflow.com/questions/70890826
复制相似问题