On 07/07/15 06:13, Renat Akhmerov wrote:
Just to clarify: what we’re looking for is how to implement “Work queue”
pattern described at [1] with oslo messaging. As Nikolay said, it
requires that a message to be acknowledged after it has been processed.

Yeah, so as you've discovered, oslo.messaging has no support for reliable asynchronous messaging. (Synchronous messaging in the form of 'call' can be somewhat reliable - in the sense that as long as the caller is still alive it can retry until it gets a reply.)

In theory you could modify oslo.messaging to ack the message _after_ processing, but in practice I don't know how much that would help. IIRC Rabbit's acknowledgement mechanism still exhibits some flakiness when viewed from end-to-end, but even if that's wrong the very best you could say about it is that it's completely dependent on what settings are used in the RabbitMQ deployment - which are completely opaque to you. Since no project really 'owns' the semantics of Rabbit I don't believe there's any docs saying how it must be deployed, and if there is such a project then it's oslo.messaging and that acks messages before acting them so it's unlikely that it's docs call out the importance of reliable end-to-end delivery.

The way I see it, there are two other options that would be preferable:

1) Implement your own acks. Save the msg content to the DB, send a RabbitMQ message, delete the message from the DB once it's processed, have a periodic task to resend any messages that have timed out. Or
2) Zaqar

cheers,
Zane.

[1] http://www.rabbitmq.com/tutorials/tutorial-two-python.html

Renat Akhmerov
@ Mirantis Inc.



On 07 Jul 2015, at 15:58, Nikolay Makhotkin <[email protected]
<mailto:[email protected]>> wrote:

Hi,

I am using RabbitMQ as the backend and searched oslo.messaging for
message acknowledgement feature but I found only [1] what is wrong
using of acknowledgement since it acknowledges incoming message before
it has been processed (while it should be done only after processing
the message, otherwise we can lost given message if, say, the server
suddenly goes down).

So, my questions: does oslo.messaging indeed not support correct
acknowledgement feature? Or it is impossible to do for oslo.messaging
paradighm? Or is it somehow connected with that oslo.messaging has to
support a lot of transport types?

Can't it be implemented somehow in oslo.messaging?

[1]
https://github.com/openstack/oslo.messaging/blob/master/oslo_messaging/rpc/dispatcher.py#L135


Best Regards,
Nikolay
@Mirantis Inc.
__________________________________________________________________________
OpenStack Development Mailing List (not for usage questions)
Unsubscribe: [email protected]
<mailto:[email protected]>?subject:unsubscribe
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev



__________________________________________________________________________
OpenStack Development Mailing List (not for usage questions)
Unsubscribe: [email protected]?subject:unsubscribe
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev



__________________________________________________________________________
OpenStack Development Mailing List (not for usage questions)
Unsubscribe: [email protected]?subject:unsubscribe
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev

Reply via email to