[rabbitmq-discuss] Fwd: question on the faq
Gordon Sim
gsim at redhat.com
Tue Jan 6 10:39:00 GMT 2009
Matthias Radestock wrote:
> Gordon,
>
> Gordon Sim wrote:
>> I don't believe it is valid for a queue to disappear due to some
>> internal fault. That to me is a bug and outside the scope of the
>> specification.
>
> It's certainly a bug. The question is how to deal with it. I would
> expect to see some errors recorded in the logs (which RabbitMQ does),
> some admin to be informed, etc, etc, which indeed are all things outside
> the protocol spec. When it comes to raising protocol errors though, if
> the spec doesn't specify the precise conditions under which such errors
> are signalled then it's up to implementation choice.
I think internal-error is a good choice for notifying a client of an
error caused by a bug.
>>> there is also a case for saying that queues are of no concern to
>>> publishers, only consumers, since publishers never address them
>>> directly.
>>
>> True, but a system as a whole needs to be able to rely on the
>> semantics of an exchange and the lifecycle of the queue. I think what
>> confuses me is the notion of a queue vanishing due to some unspecified
>> error, and I would feel very uncomfortable having the broker simply
>> continue without signaling that potentially catastrophic violation of
>> the specified semantics of a broker.
>
> Perhaps, but who should this condition be signalled to? I'd argue the
> *consumers* should be told about it. After all, the queue may vanish
> long after anyone has published a message to it. Conversely, if nobody
> ever tries to consume messages from the queue then the fact that it once
> existed and then vanished is of little interest to anybody.
Notifying consumers is all well and good. However there may not be any
consumers at the point the message is published. An important role of
the queue is to accept responsibility for the message from the
publishing client until that can be transfered onto the receiving client.
The whole concept of the queue vanishing is a bit alien to me and seems
to make reasoning about reliability more difficult. However, I've
strayed from my original motivation from joining the thread which was
simply curiousity about the atomicity guarantees in RabbitMQ. Thanks for
all the clarifications and insights!
More information about the rabbitmq-discuss
mailing list