[openstack-dev] [Oslo] First steps towards amqp 1.0
Gordon Sim
gsim at redhat.com
Tue Dec 10 12:12:41 UTC 2013
On 12/09/2013 10:37 PM, Russell Bryant wrote:
> On 12/09/2013 05:16 PM, Gordon Sim wrote:
>> On 12/09/2013 07:15 PM, Russell Bryant wrote:
>> Understood. The Dispatch Router was indeed created from an understanding
>> of the limitations and drawbacks of the 'federation' feature of qpidd
>> (which was the primary mechanism for scaling beyond one broker) as well
>> learning lessons around the difficulties of message replication and
>> storage.
>
> Cool. To make the current situation worse, AFAIK, we've never been able
> to make Qpid federation work at all for OpenStack. That may be due to
> the way we use Qpid, though.
The federation in qpidd requires path specific configuration. I.e. for
each topic or queu or whatever you need to explicitly enable the flow of
messages in each direction between each pair of brokers.
The original uses cases it was designed for were much simpler than
openstacks needs and this wasn't insurmountable. As it was used in new
areas however the limitation became apparent. The Dispatch Router
instances on the other hand communicate with each other to automatically
setup the internal routing necessary to ensure publishers and
subscribers communicate regardless of the point at which they are attached.
Another limitation of the original federation was the inability to
handle redundant routes between brokers without duplicating messages.
[...]
>> The Dispatch Router can work for pub-sub patterns as well, though not
>> store and forward directly. In theory, for flows where store-and-forward
>> is needed, that can be supplied by an additional service e.g. a more
>> traditional broker, which would take responsibility for replaying over
>> from the publisher in order that subscribers could if needed have
>> message replayed even after the original publisher had exited.
>
> Any thoughts on what we would be recommending for notifications?
For basic pub-sub (i.e. no durable/reliable subscriptions that retain
messages across disconnects), dispatch router itself will work fine.
For those cases where you do need store-and-forward, i.e. where
something other than the publisher needs to reliably store notifications
until all interested subscribers have confirmed receipt, you could use a
broker (rabbitmq, qpidd, activemq or similar).
The plan for dispatch router is to allow such brokers to be hooked into
the router network also. So you could have the broker(s) accept the
messages from the publishers, and then have any subscribers needing
reliability guarantees subscribe to the broker via the router network.
The aim is to allow the load to be spread across multiple brokers, but
have dispatch router control the flow of messages in and out of these,
rather than relying on the brokers to link themselves up. This aspect
however is not yet built (but is coming soon!).
Durable/reliable subscriptions do of course bring with them the need to
manage potential growth of backed up, unconfirmed messages, e.g. when a
subscriber is down or unresponsive for some time. Ensuring that there
are limits in place that prevent this getting out of hand are essential.
More information about the OpenStack-dev
mailing list