[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.

-Alan


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