[rabbitmq-discuss] EventMachine EM::Iterator being blocked with rabbitmq rbc

Paul Cowan dagda1 at scotalt.net
Fri Jan 6 17:38:24 GMT 2012


Hi,

I have refactored my code to use EM::defer.  I still have the same problem
as before.

I am a bit new to rabbitmq and EventMachine, I wonder if anyone could
review the EM::defer code in the following gist:

https://gist.github.com/1571453

Also, do you think the header.ack on line 44 of the gist is in the right
place?

Cheers

Paul Cowan

Cutting-Edge Solutions (Scotland)

http://thesoftwaresimpleton.com/



On 6 January 2012 08:39, Paul Cowan <dagda1 at scotalt.net> wrote:

> Hi,
>
> Thanks for the answer, I will rollback to EM::defer and checkout what is
> going on over wireshark.
>
> Is there any documentation for the append_callback method and if so, where
> can I find it.
>
> Cheers
>
> Paul Cowan
>
> Cutting-Edge Solutions (Scotland)
>
> http://thesoftwaresimpleton.com/
>
>
>
>
> On 6 January 2012 07:44, Michael Klishin <michael.s.klishin at gmail.com>wrote:
>
>> Paul Cowan:
>>
>> > The above code works as I want with one annoying exception. Something
>> is blocking the EM::Iterator code from being executed asynchronously. It is
>> only after the EM::Iterator code has completed that the messages are sent.
>> I want the messages to be sent asynchronously and handled by the anonymous
>> queue after each iteration. At the moment, it is only after the
>> EM::Iterator code has completed its last iteration that all the messages
>> are sent.
>> >
>>
>> This is a question for EventMachine mailing list. EventMachine::Iterator
>> is only available in beta releases of EventMachine 1.0, so use it with
>> caution.
>>
>> > Can anyone see what I am doing wrong or suggest a different approach? I
>> tried EM::defer and had the same behaviour.
>> >
>>
>> EventMachine.defer uses a thread pool with 20 threads by default. If
>> operations you defer to it are blocked, it may suggest that the issue is
>> not with something blocking the event loop.
>>
>> For example, you are using prefetch = 1 and manual acknowledgements for
>> your consumer that uses EventMachine::Iterator. However, I don't see
>> messages being acknowledged.
>>
>> You can use Wireshark GUI to record a session of what's going up and down
>> the wire (filter for "amqp").
>>
>> MK
>>
>> http://github.com/michaelklishin
>> http://twitter.com/michaelklishin
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rabbitmq.com/pipermail/rabbitmq-discuss/attachments/20120106/b209195c/attachment.htm>


More information about the rabbitmq-discuss mailing list