[rabbitmq-discuss] Published message not queued after publish-ok received when connection quickly closed

Michael Nacos m.nacos at gmail.com
Mon Jul 4 21:24:53 BST 2011


there seems to be some support for tx_select, tx_commit, tx_rollback in the
master branch of the amqp gem, but not in the 0.7.x-stable branch, which is
what most people are using

2011/5/6 David Wragg <david at rabbitmq.com>

> Simon MacMullen <simon at rabbitmq.com> writes:
> > On 05/05/11 22:33, Elias Levy wrote:
> >> While writing some code using the Ruby AMQP gem against RabbitMQ, I've
> >> noticed that if I publish a message and quickly close the connection,
> >> even though I've received a publish-ok response from the server, the
> >> message fails to be queued by the broker.
> >
> > I'm not at all familiar with the Ruby client, but I should point out
> > that unlike many of the other AMQP methods, basic.publish does not
> > have a corresponding basic.publish-ok method; it's always
> > asynchronous. So I imagine the post-publish callback fires
> > immediately.
> >
> > In order to be able to know when the broker has taken responsibility
> > for a message you can either wrap the publish in a transaction (when
> > you see tx.commit-ok you know the server has the message) or use the
> > rather more lightweight publish confirms:
> o>
> > http://www.rabbitmq.com/blog/2011/02/10/introducing-publisher-confirms/
>
> Another way to solve the problem is to do a synchronous AMQP method
> rather than abruptly closing the connection.  If this the sync method
> completes successfully, you can be sure that your published messages
> have reached the broker (it doesn't give you all the guarantees of
> transactions, but it is much lighter weight).
>
> An easy way to do this with all versions of the AMQP gem (even 0.6.7) is
> to use the AMQP#close callback.  E.g., add something like this to your
> code:
>
>  client.close { puts "Closed ok" ; EM.stop }
>
> David
>
> --
> David Wragg
> Staff Engineer, RabbitMQ
> VMware, Inc.
> _______________________________________________
> 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/20110704/54f42baf/attachment.htm>


More information about the rabbitmq-discuss mailing list