在Rebus中手动提交Kafka



通过这个lib使用Kafka作为传输,Rebus有没有办法控制消费者何时提交消息?我想使用Kafka中的一个事件,做一些可能除了/失败的工作,并且只有在成功的情况下告诉Kafka向前移动偏移。

我是您使用的"Rebus.Kafka"库的作者。您只能通过取消订阅来完全停止接受出版物。然后回滚偏移量并重新处理队列。想要停止处理消息对于公交车用户来说是一种不自然的愿望。作为停车的替代方案,您可以考虑以下选项:

  1. 处理程序管道
  2. 自动重试和错误处理
  3. 工人与平行

请提供您想要实现的更详细的案例。

添加:

如果您对默认选项EnableAutoCommit=true不满意,可以在配置参数中设置其值以及生产者和消费者的所有其他参数。

EnableAutoCommit = false,

在这个使用传输"Rebus.Kafka"的例子中显示了如何做到这一点:https://github.com/glazkovalex/Rebus.Kafka/blob/master/Examples/Scaleout.Producer/Program.cs

请注意,禁用autoCommit的传输的当前版本接收五条消息,并在处理后移动指针。换句话说,如果服务在禁用autoCommit的情况下中断,则服务在重新启动时最多可以重新处理五条消息。这些重新处理的消息的数量可以在未来版本的传输"Rebus.Kafka"中更改。

相关内容

  • 没有找到相关文章

最新更新