在我的应用程序中,我正在使用spring-kafka
来消耗来自kafka服务器的消息,但是我从控制台使用者获得了所有活动的使用者线程中的consumer-id
TOPIC PARTITION CURRENT-OFFSET LOG-END-OFFSET LAG CONSUMER-ID HOST CLIENT-ID
easytest-events 9 247367 247367 0 p3-S14-0-e6a1d3cb-8ab3-435f-9f53-5081a6e8f812 /10.66.56.129 p3-S14-0
有没有办法通过代码获取consumer-id
,以便我可以进行比较
答案 0 :(得分:2)
使用者ID似乎是附加了UUID的客户端ID-因此您可以只使用客户端ID(可以将其设置为所需的任何值)。 Spring将添加-0,-1等。
随着分配分区,您可以看到日志中的线程数...
2018-08-31 09:34:27.869 INFO 55748 --- [o52105744-0-C-1] o.s.k.l.KafkaMessageListenerContainer : partitions assigned: [so52105744-0]
2018-08-31 09:34:27.876 INFO 55748 --- [o52105744-2-C-1] o.s.k.l.KafkaMessageListenerContainer : partitions assigned: [so52105744-3]
2018-08-31 09:34:27.876 INFO 55748 --- [o52105744-1-C-1] o.s.k.l.KafkaMessageListenerContainer : partitions assigned: [so52105744-2]
2018-08-31 09:34:27.876 INFO 55748 --- [o52105744-9-C-1] o.s.k.l.KafkaMessageListenerContainer : partitions assigned: [so52105744-1]
2018-08-31 09:34:27.876 INFO 55748 --- [o52105744-3-C-1] o.s.k.l.KafkaMessageListenerContainer : partitions assigned: [so52105744-4]
2018-08-31 09:34:27.876 INFO 55748 --- [o52105744-6-C-1] o.s.k.l.KafkaMessageListenerContainer : partitions assigned: [so52105744-7]
2018-08-31 09:34:27.876 INFO 55748 --- [o52105744-5-C-1] o.s.k.l.KafkaMessageListenerContainer : partitions assigned: [so52105744-6]
2018-08-31 09:34:27.876 INFO 55748 --- [o52105744-4-C-1] o.s.k.l.KafkaMessageListenerContainer : partitions assigned: [so52105744-5]
2018-08-31 09:34:27.877 INFO 55748 --- [o52105744-7-C-1] o.s.k.l.KafkaMessageListenerContainer : partitions assigned: [so52105744-8]
2018-08-31 09:34:27.877 INFO 55748 --- [o52105744-8-C-1] o.s.k.l.KafkaMessageListenerContainer : partitions assigned: [so52105744-9]
答案 1 :(得分:0)
我也有类似的用例,我想获取使用者ID进行日志记录,所以我使用了当前线程名称,它似乎可以正常工作。
LOGGER.info("Current thread: {}",Thread.currentThread().getName());
并打印:-
Current thread: org.springframework.kafka.KafkaListenerEndpointContainer#0-0-C-1
Current thread: org.springframework.kafka.KafkaListenerEndpointContainer#0-2-C-1
Current thread: org.springframework.kafka.KafkaListenerEndpointContainer#0-1-C-1
这也清楚地表明消息每次都由不同的线程使用(可能是循环方式)