【发布时间】:2021-08-18 11:05:15
【问题描述】:
假设 kafka 消息生产者向主题发送事件消息。然后一个消费者处理这个事件消息。但是,这个消费者进程因为业务错误而抛出异常,所以他想让消息生产者知道并重新发送。
有什么解决办法吗?
【问题讨论】:
假设 kafka 消息生产者向主题发送事件消息。然后一个消费者处理这个事件消息。但是,这个消费者进程因为业务错误而抛出异常,所以他想让消息生产者知道并重新发送。
有什么解决办法吗?
【问题讨论】:
一般来说,您不应该在生产者和消费者之间建立这种耦合。
如果消费者未能读取消息,那么理想情况下它不应该提交该偏移量。如果记录在 Kafka 中没有过期,则生产者无需发送任何内容,因为数据仍在代理中,因此重新启动消费者应用程序将尝试再次读取失败的偏移量。
【讨论】:
如果您希望它永远不会错过任何消息,但可能会重复偶尔出现的消息,您可以使用传递语义“至少一次”。
【讨论】: