Kafka only supports exactly-once and idempotency within the context of
streams apps where records are consumed and produced within the same
cluster. As soon as you touch the outside world in a non-idempotent way,
e.g. by sending an email, these guarantees fall away. It is essentially
impossible to guarantee that an intended action occurs no more than once
while also guaranteeing that no intended action is skipped. This is a
problem with distributed systems in general.
You might use something like a cache to prevent most spurious emails -- if
the cache already has record of the email being sent, don't resend it --
but this will not prevent all duplicates.
On Fri, May 10, 2019 at 7:26 AM ASHOK MACHERLA <[EMAIL PROTECTED]> wrote: