[rabbitmq-discuss] request for help!
Robert Godfrey
rob.j.godfrey at gmail.com
Mon May 10 16:30:59 BST 2010
Hi Colin,
On 10 May 2010 16:32, Colin Clark <colin at cloudeventprocessing.com> wrote:
> In regards to the once-and-only-once discussion below:
>
> In many financial formats, like FIX and others, we utilize message ID's that
> help with this behavior a lot. It also prevents from messages being
> delivered out of sequence. For example.
>
> Client logs in - server and client at message ID of 0,
> every message that the server sends has an incremented ID,
> if the client receives an unexpected ID, it can either request a retransmit
> from the last known or kill the session,
> when a client logs back in, the client logs in with the expected ID, server
> & client negotiate and session resumes.
> (there are id's for both the client & server messages, both incremented for
> each message and the above behavior applies on both sides of the connection)
>
> FIX employs an optimistic delivery protocol, i.e., assume that it was
> received. There is no session level ack. Only an ack at the application
> level; and that ack is not mandatory. Use of the message ID provides the
> once & only once and in order semantics required for trading; a behavior
> that is obviously very useful elsewhere as well.
>
> Using sequence #'s also allows for advanced concepts such as flow control -
> I haven't read enough of the spec yet to see if that's a feature yet or not.
We use sequence numbers for flow control, this is separate from the
tag used for de-duplication.
> I do agree, if a message is sent, then an ack is waited for, sending an ack
> of ack seems a little over kill to me. Perhaps it's time for me to read the
> whole spec again.
>
As I (and Rafi who seems to have simultaneously said much the same
thing :-) ) have said, this is not required behaviour. You can
*choose* to behave in this way, but for the use case above I very much
doubt that is how you would want to behave. The receiver can
periodically notify the sender as to the high-watermark of messages
that it considers settled - this will give the same behaviour as
above.
Hope this helps,
Rob
More information about the rabbitmq-discuss
mailing list