[rabbitmq-discuss] Exactly Once Delivery
Martin Sustrik
sustrik at 250bpm.com
Tue Aug 10 08:52:08 BST 2010
Alexis Richardson wrote:
> We've often found customers whose requirements include "please break
> the laws of physics, and cure cancer". I'm sure you know what I mean.
> If you could advise us on how to best help in such cases, we're all
> ears.
>
> In the meantime we are stuck in world where "guaranteed" has no fixed
> connotation.
Yes. People tend to have unrealistic expectations.
It kind of reminds me of requirements for "security". Yes, application
can be made more resistant to attacks, however, "security" is not a
purely technical issue. It's a technical and _operational_ issue. To
achieve "security" you have to use good software _and_ introduce a sane
security policy in your organisation.
Same with guaranteed delivery. While applications can do all kinds of
tricks to improve reliability at some point you'll have to load the data
to USB key and ride across the country to deliver it.
So the goal of designing "guaranteed delivery" is twofold IMO. First,
it's doing all the tweaking of the software necessary to get as much
nines of reliability as possible. Second, its promoting sane
organisational patterns (patterns that would prevent message lost or
duplication).
Let me give a simple example:
1. Messages are confirmed by simple ack. There's no replay
functionality. This guarantees no duplicates.
2. Sender has a timeout for getting an ack. When the ack does not
arrive, the message is moved to dead letter queue. (Note that messages
in the DLQ are "dubious", i.e. they may have been delivered or not, we
don't know).
3. There's a person in the organisation responsible for the dead letter
queue. He goes through the queue once a day and tries to find out what's
the actual state of the dubious messages is (using personal
conversation, phone, checking the production system etc.) Delivered
messages can be simply deleted from the DLQ. Lost messages can be
resubmitted in different ways (doing a new transaction, reading the
details of the transaction over the phone etc.)
My 2c.
Martin
More information about the rabbitmq-discuss
mailing list