Kafka Spring client with container option Assignment Commit Option 它是如何工作的?
Kafka Spring client with container option AssignmentCommitOption how dose it work?
我使用 Kafka Spring 将容器“ConcurrentKafkaListenerContainerFactory”作为批处理消息插入到数据库中,以防发生错误
- 错误消息我会将该消息发送到另一个主题。
- 如果连接失败或超时,我将回滚数据库事务和生产者事务以防止误报
而且我没有得到 assignmentCommitOption 选项它是如何工作的以及它在 ALWAYS,NEVER,LATEST_ONLY 和 LATEST_ONLY_NO_TX,
之间有何不同
如果分配的分区没有当前提交的偏移量,则此选项控制是否在分配期间提交初始偏移量。
真正只有在使用auto.offset.reset=latest
时才有用。
考虑这种情况。
应用程序出现并分配了一个“新”分区;消费者将位于主题的末尾。
未从该 topic/partition 收到任何记录,应用程序已停止。
记录随后发布到 topic/partition 并重新启动消费者应用程序。
由于分区仍然没有提交的偏移量,它将再次定位在末尾,我们不会收到发布的记录。
这可能是您想要的,但也可能不是。
将选项设置为 ALWAYS
、LATEST_ONLY
或 LATEST_ONLY_NO_TX
(默认)将导致在分配期间提交初始位置,以便接收发布的记录。
_NO_TX
变体通过 Consumer
提交偏移量,另一个通过事务生产者提交。
我使用 Kafka Spring 将容器“ConcurrentKafkaListenerContainerFactory”作为批处理消息插入到数据库中,以防发生错误
- 错误消息我会将该消息发送到另一个主题。
- 如果连接失败或超时,我将回滚数据库事务和生产者事务以防止误报
而且我没有得到 assignmentCommitOption 选项它是如何工作的以及它在 ALWAYS,NEVER,LATEST_ONLY 和 LATEST_ONLY_NO_TX,
之间有何不同如果分配的分区没有当前提交的偏移量,则此选项控制是否在分配期间提交初始偏移量。
真正只有在使用auto.offset.reset=latest
时才有用。
考虑这种情况。
应用程序出现并分配了一个“新”分区;消费者将位于主题的末尾。
未从该 topic/partition 收到任何记录,应用程序已停止。
记录随后发布到 topic/partition 并重新启动消费者应用程序。
由于分区仍然没有提交的偏移量,它将再次定位在末尾,我们不会收到发布的记录。
这可能是您想要的,但也可能不是。
将选项设置为 ALWAYS
、LATEST_ONLY
或 LATEST_ONLY_NO_TX
(默认)将导致在分配期间提交初始位置,以便接收发布的记录。
_NO_TX
变体通过 Consumer
提交偏移量,另一个通过事务生产者提交。