Debezium 博客
时不时地,在 Debezium 的 聊天 或 邮件列表 中会有人问如何确保 Debezium 生成的记录被精确地发送一次。到目前为止,Debezium 只致力于至少发送一次(at-least-once delivery)。这意味着 Debezium 保证每个变更都会被发送,并且不会丢失或跳过任何变更事件。然而,在发生故障、重启或数据库连接断开的情况下,同一个事件可能会被发送多次。典型的情况是事件被发送两次——一次在失败/重启之前,第二次在之后。精确发送一次(exactly-once delivery 或 semantic)提供了更强的保证——每个消息都将被发送,同时不会有重复,每个消息都只会被发送一次。到目前为止,我们的回答是,如果用户需要精确发送一次,他们必须自己实现去重系统。然而,随着 Kafka Connect 对精确发送一次的支持,我们似乎可以通过稍微改变配置,就能为 Debezium 连接器开箱即用地提供精确发送一次的功能。