[rabbitmq-discuss] Change in semantics of {exchange, queue}.{unbind, delete}

Alan Antonuk alan.antonuk at gmail.com
Mon Jan 13 18:54:39 GMT 2014

That all makes sense.  Thanks for the explanation.


On Sun, Jan 12, 2014 at 1:56 AM, Matthias Radestock
<matthias at rabbitmq.com>wrote:

> Alan,
> On 12/01/14 01:17, Alan Antonuk wrote:
>> It appears that the semantics of exchange.delete, exchange.unbind,
>> queue.delete, and queue.unbind when the entity doesn't exist have
>> changed: they used to throw a channel exception, now they do not.
>> [...]
>> I'm also kind of curious as to why this behavior was changed (which I
>> would assume was for perf reasons).
> The new behaviour is more useful and semantically consistent. AMQP
> generally has an idempotent assertion semantics, i.e. commands indicate
> what should be rather than what should happen. This is so that clients can
> operate independently on the shared space of resources, with each client
> simply asserting what it requires.
> So declaring an exchange/queue/binding which already exists is perfectly
> fine. And deleting an exchange/queue/binding which doesn't exist should
> therefore be fine too.
> You can get the old behaviour by prefixing the delete with a passive
> declare.
> Regards,
> Matthias.
> _______________________________________________
> rabbitmq-discuss mailing list
> rabbitmq-discuss at lists.rabbitmq.com
> https://lists.rabbitmq.com/cgi-bin/mailman/listinfo/rabbitmq-discuss
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rabbitmq.com/pipermail/rabbitmq-discuss/attachments/20140113/061aa0bc/attachment.html>

More information about the rabbitmq-discuss mailing list