Spring Cloud Stream 的绑定名怎么来的?不配 group 会怎样?新消费组从哪里开始读?处理失败的消息去哪了?为什么我写了两个 Consumer 一条消息都收不到?这篇接一个真实的 Kafka 在 Spring Cloud Stream 5.0.3 上逐项验证。
Kafka 里新出现的 topic:['__consumer_offsets', 'in-in-0'] 消费组列表:['anonymous.258622ca-b725-4db5-a927-76e9da123814'] 往 in-in-0 发 m1:['a in 收到 m1 (分区 0)'] 发 m1 之后的消费组:['anonymous.258622ca-b725-4db5-a927-76e9da123814']
in-in-0,topic 自动创建,不配 group 是匿名消费组。
[没有 group] 两个实例,同一个 topic:a1 收到 8 条,a2 收到 8 条;消费组 = ['anonymous.…258622ca-b725-4db5-a927-76e9da123814', 'anonymous.…da77a8d2-4701-4c [group=g1] 两个实例:b1 收到 4 条(分区 ['0']),b2 收到 4 条(分区 ['1']),合计 8 条
匿名组每个实例收全量;具名组分摊分区。
具名消费组 newgroup 第一次启动:['e1 (分区 0)', 'e2 (分区 0)', 'e3 (分区 0)'] 匿名(没有 group)启动:没有收到任何历史消息
新的具名组从最早开始;匿名组只读新消息。
默认配置:bad-1 的处理日志:['处理 bad-1 抛异常(第 1 次)', '处理 bad-1 抛异常(第 2 次)', '处理 bad-1 抛异常(第 3 次)'];ok-2 是否收到:True 重启后同一个消费组再启动,是否又收到 bad-1:False enableDlq=true:bad-9 被处理了 3 次;Kafka 里的 topic 有 ['error.t-dlq.gdlq', 't-dlq'] DLQ topic 里的内容:['bad-9']
重试 3 次后丢弃;enableDlq 转存死信 topic。
新出现的 topic:[] 发到 in-in-0 与 other-in-0 各一条之后收到:[] 配了 spring.cloud.function.definition=in;other:['in 收到 y1 (分区 0)', 'other 收到 y2 (分区 0)']
必须写 spring.cloud.function.definition。