Apache kafka 与卡夫卡在Rebus中手动提交

Apache kafka 与卡夫卡在Rebus中手动提交,apache-kafka,kafka-consumer-api,rebus,Apache Kafka,Kafka Consumer Api,Rebus,使用Kafka作为的传输方式,Rebus是否可以控制消费者何时提交消息?我想使用卡夫卡的一个事件,做一些可能除了/失败之外的工作,并且只有在成功的情况下才告诉卡夫卡向前移动偏移量。我是您使用的库的作者。您只能通过取消订阅来完全停止接受出版物。然后回滚偏移量并重新处理队列。想要停止处理消息对公交车用户来说是一种不自然的愿望。 作为停止总线的替代方案,您可以考虑以下选项: 请提供您想要实施的更详细的案例 添加: 如果您对默认选项EnableAutoCommit=true不满意,可以在配置参数中

使用Kafka作为的传输方式,Rebus是否可以控制消费者何时提交消息?我想使用卡夫卡的一个事件,做一些可能除了/失败之外的工作,并且只有在成功的情况下才告诉卡夫卡向前移动偏移量。

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

  • 请提供您想要实施的更详细的案例

    添加:

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

    EnableAutoCommit = false,
    
    此使用传输的示例显示了如何执行此操作:


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

    我是您使用的库“Rebus.Kafka”的作者。你写道:“除非它成功了,告诉卡夫卡将偏移量向前移动”。请告诉我们拒绝接收您的客户端代码无法处理且没有错误的消息意味着什么。如果处理消息时代码中出现异常,是否要停止接收任何新消息?请提供您想要实施的更详细的案例。感谢@Mentor的回复。基本上,我正在寻找解决上述数据丢失问题的方法。据我所知,使用Kafka实现的一种方法(即,没有像Rebus这样的抽象库)是关闭自动提交,并且只有在处理完消息后才提交。这样,如果出现问题,信息最终将被重新传递。我相信这是来自卡夫卡的一个规定流程,用于他们版本的“一次完成”交付,但我可能弄错了。是的,你是对的,这是你应该如何使用Apache卡夫卡的。在传输配置中设置使用者参数EnableAutoCommit=false。