使用spring-kafka调试应用时,以给定的偏移量获取1条消息

时间:2018-10-30 10:49:34

标签: spring-kafka

我知道,随机访问效率低下。但是应用失败了,记录的内容(让我们假设它)大到可以记录日志或以其他方式不合适(没有假设就可以了),所以我只有信息,该偏移处的记录失败了,为什么。好,现在我想查看数据,比如说能够复制它。该怎么做?

好的,我可以使用ConsumerSeekAware消费者,但这将倒回该位置并从该位置开始处理所有记录。我不想要,我只想要1条特定消息。对于该用例,我可以在特定使用者组中使用特定使用者,而不影响其他使用者,并将ConsumerConfig.MAX_POLL_RECORDS_CONFIG设置为1,以便每个请求仅返回1条记录,但这不会阻止所有记录到达侦听器。由于无法通过编程方式手动调用民意调查。对?还是有这种方法?或其他如何实现这一目标?即使我尝试接触spring-kafka的内部人员,也可能是org.apache.kafka.clients.consumer。似乎故意使消费者无法访问该消费者,或者至少我看不到这种方式。

1 个答案:

答案 0 :(得分:0)

是的,您可以手动创建自己的使用者并对其进行轮询。

获取对消费者工厂的引用,然后调用`createConsumer(“ tempGroup”,“ tempClient”)。

您需要使用max.poll.records=1创建第二个消费工厂。

您可以通过调用getConfigurationProperties()从主工厂复制其他属性,然后从主工厂创建新地图并创建新的DefaultKafkaConsumerFactory

完成后关闭使用者。