[rabbitmq-discuss] Handling Channel.Flow method

Chris Duncan celldee at gmail.com
Wed Jan 6 17:07:29 GMT 2010


Hi Gordon,

On 6 Jan 2010, at 16:50, Gordon Sim wrote:

> On 01/06/2010 06:55 AM, Alexis Richardson wrote:
>> On Wed, Jan 6, 2010 at 4:40 AM, Chris Duncan<celldee at gmail.com>   
>> wrote:
>>>
>>> I've also been reading the AMQP 0-10 specification. I have only  
>>> skimmed it
>>> before because I wasn't targeting a broker that implemented it.  
>>> It contains
>>> a section about transfer of responsibility that seems to deal  
>>> with the
>>> issues that I've been trying to address in my last two posts.
>>
>> Yes, that's how we designed it.  But, the goal of 0-10 was to provide
>> a way to use acks and nacks for exactly-once delivery.  Your email
>> only asks for an ack.  That's a bit easier and IMO better.
>
> The need for some confirmation of publish is much wider than  
> exactly-once delivery. That confirmation mechanism should also  
> support asynchronous use if desired to avoid the performance impact  
> Scott points out[*].
>
> The 0-10 protocol doesn't really provide nacks per se. It has a  
> message-release command which is useful when subscribers want to  
> use prefetch and need to relinquish some of the messages delivered  
> to them without killing the session.
>
> [*] Perhaps of interest to mention that there was some disagreement  
> within the amqp wg on whether -ok response to methods identified as  
> synchronous by the 0-8 spec could be used asynchronously i.e.  
> whether it was valid to send methods without waiting for the -ok  
> and process receipt of those -ok response as they arrive in the  
> other direction. Most (all?) of them aren't explicitly correlated,  
> so were you to do that you would need to rely on the order of -oks  
> matching the order of methods which if I recall correctly was the  
> cause for concern at the time.

I thought that the :nowait argument in the 0-8, 0-9 and 0-9-1 specs  
was what provides the ability to use synchronous methods in an  
asynchronous fashion. When I use the terms synchronous and  
asynchronous here I'm using them in the manner that the AMQP specs  
seem to use them; namely synchronous methods send a response to tell  
you whether they've succeeded and asynchronous ones don't. If :nowait  
is set to true doesn't that mean that the server will not send an -ok  
response?

Regards,

Chris




More information about the rabbitmq-discuss mailing list