I am planning to use debezium for producing events to Kafka
and I need strong delivery and ordering guarantees. By using enable.idempotence=true
paramater in producer config I can have these guarantees.
My questions are:
Note: I am planning to use Debezium Connector for PostgreSQL
Delevery Sematincs
debezium guarantees at-least-once delivery:
When all systems are running nominally or when some or all of the systems are gracefully shut down, then consuming applications can expect to see every event exactly one time. However, when things go wrong it is always possible for consuming applications to see events at least once.
Source: Why must consuming applications expect duplicate events?
Ordering Guarantees
debezium has strong ordering guarantees:
Most connectors will record all events for a single database table to a single topic. Additionally, all events within a topic are totally-ordered, meaning that the order of all of those events will be maintained. (Even if events are duplicated during failures, the end result after applying all of the events will remain the same.)