kafka消费异常

背景

  1. 同一个kafka有两个topic,分别为topic1,topic2
  2. topic1先于topic2生产数据(结果均成功)
  3. 消费时设置两个consumer分别订阅topic1和topic2
  4. 消息关系:topic1生产消息A,topic2生产消息A1,A2,A3...

功能:先消费topic1的消息A再消费topic2的消息A1、A2等

问题

少数随机出现先消费topic2中的消息(A1/A2等)再消费到topic1中的消息A

日志

异常节点消费日志
2019-08-23 03:57:03,803 - log.48 - INFO -  [1048980] 新增本地汇总信息:消息2
2019-08-23 03:57:03,805 - log.48 - INFO - 消费详情(4):消息1.1
2019-08-23 03:57:05,712 - log.48 - INFO -  [1048978] 新增本地汇总信息:消息1
正常节点消费日志
2019-08-23 03:57:02,469 - log.48 - INFO -  [1048978] 新增本地汇总信息:消息1
2019-08-23 03:57:02,825 - log.48 - INFO - 消费详情(1):消息1.1

原因

  • topic1和topic2消费独立,即对于不同节点消费互不关联

  • 同一个应用节点、消费组group_id针对某个topic消息是无序单条消息消费,即对于topic1消费不一定是先生产先消费,比如topic1生产消息1和消息2,是可能会出现先消费到消息2再消费到消息1的情况,而且是先消费完消息2后再消费消息1,不会出现同时消费到消息1和消息2的情况。(只有对于相同消费组grouop_id且同一partition下消费消息才是有序的)

拓展

  • 为什么topic2消费隔那么久才消费topic1? 因为超时处理耗时,在消费topic2时处理完毕后消费到了topic1数据

  • 为什么同样是topic1的数据后面生产的数据A消费到了,前面生产的数据B还没到 消息 A 推到partition1 消息2 推到partition 2 在消费的时候 partition 1,2 是没有顺序的 (auto_offset_reset 针对分区而言的)

本文作者:朝圣

本文链接:www.zh-noone.cn/2019/8/kafka-consumer-e

版权声明:本博客所有文章除特别声明外,均采用CC BY-NC-SA 3.0许可协议。转载请注明出处!

随手记下richdad
0 条评论