On 09/19/2014 08:53 AM, Flavio Percoco wrote:
On 09/18/2014 09:25 PM, Gordon Sim wrote:
I don't see that the claim mechanism brings any stronger guarantee, it
just offers a competing consumer behaviour where browsing is
non-competing (non-destructive). In both cases you require the client to
be able to remember which messages it had processed in order to ensure
exactly once. The claim reduces the scope of any doubt, but the client
still needs to be able to determine whether it has already processed any
message in the claim already.
The client needs to remember which messages it had processed if it
doesn't delete them (ack) after it has processed them. It's true the
client could also fail after having processed the message which means it
won't be able to ack it.
That said, being able to prevent other consumers to consume a specific
message can bring a stronger guarantee depending on how messages are
processed. I mean, claiming a message guarantees that throughout the
duration of that claim, no other client will be able to consume the
claimed messages, which means it allows messages to be consumed only once.
I think 'exactly once' means different things when used for competing
consumers and non-competing consumers. For the former it means the
message is processed by only one consumer, and only once. For the latter
it means every consumer processes the message exactly once.
Using a claim provides the competing consumer behaviour. To me this is a
'different' guarantee from non-competing consumer rather than a
'stronger' one, and it is orthogonal to the reliability of the delivery.
However we only differ on terminology used; I believe we are on the same
page as far as the semantics go :-)
OpenStack-dev mailing list