场景:
Stream create [StreamName] --definition" Kafka -zkconnect = 10.10.10.1:2181 --topic = | MyCompositeModule" --deploy
我们以分布式模式运行此流,redis是传输总线。 根据我的理解,kafka源代码通过[streamname] -kafka-offsets主题维护MyCompositeModule(它是通过'模块组合'进程创建的模块)所消耗的消息的偏移量。这是不可读的,如果有办法从这个主题中读取数据,我将不胜感激。
另外,当我从kafka源推送消息时,消息在redis传输中排队,然后模块从这个队列中取出它们。
如果kafka消费者模块开始从kafka redis队列消耗1000条消息,并且复合模块在收到10条消息或随机处理10条消息后失败。那么如何识别剩余的990 [1000(消耗) - 10(已处理)= 990]未处理消息。 即使我们检查kafka偏移量,它也会显示消耗的消息数量。示例:-kafka.offsets - 在我们的过程中无法读取。
所以所有未处理的消息都将在Redis队列中,因为我们在SpringXD中使用Redis。所以任何人都可以帮助我识别未处理的消息和 将其发送到复合模块进行处理。
基本上,我正在寻找有关强大交付的优雅解决方案的建议,在使用来自kafka源的spring xd流中添加故障处理功能。
答案 0 :(得分:1)
如果消息被有效地从Kafka消费并转移到总线,那么它们将被确认为从偏移管理器的角度消费。
您可以尝试为Redis消息总线启用重试和死信,如下所述:http://docs.spring.io/spring-xd/docs/current/reference/html/#error-handling-message-delivery-failures。
干杯, 的Marius