[openstack-dev] [OSLO][RPC] AMQP / ZeroMQ control_exchange vs port numbers

Mark McLoughlin markmc at redhat.com
Mon Apr 29 11:00:01 UTC 2013

On Fri, 2013-04-26 at 15:18 -0400, Doug Hellmann wrote:

> We've gone around a few times with ideas for having better driver-parity in
> the rpc library, so maybe the best thing to do is start by making sure we
> have all of the requirements lined up. Here's a list of some that I came up
> with based on existing features and my understanding of the shortcomings
> (numbered for reference, but in no particular order):

Thanks for doing this. We definitely need to be stepping back and
thinking about this at a high level. I've attempted to step a little
further back in my writeup:


> 1. Application code using RPC connections must not be required to know to
> pass different arguments to establish the connection (i.e., the app
> shouldn't have to care if it is using Rabbit or ZMQ).


> 2. An application must be able to direct a message to a specific peer
> (i.e., call() with a host specified).

s/direct a message to/invoke a method on/

But, yes.

> 3. An application must be able to direct a message to a pool of peers
> (i.e., cast()).

... and for it to be delivered to one of those peers, yes.

> 4. An application must be able to direct a message to a specific peer (or
> unknown? or both?) using a different rpc endpoint than the originating
> app's default (i.e., calling into cells).

I've tried to separate the notion of a transport from the target. The
properties of the target is what's known to the application code, the
properties of the transport are target specific and come from

So, I'd say "an application must be able to invoke a method on a
specific target using a supplied transport configuration".

> 5. An application must be able to listen for messages without interfering
> with others receiving those same messages (i.e., join_consumer_pool()).

For notifications, yes - and we should have an API for consuming

But for RPC (i.e. create_worker()), I don't really see it. See here:


Should ceilometer be using notifications instead of record_metering_data()

> 6. An application must be able to listen for messages sent by any peer, and
> any service (i.e., specifying a different "exchange", though we want to
> extend this to include a different broker as well).

For notifications, yes.

For RPC, this sounds like a "tap" - i.e. listen in on RPC exchanges
between peers.

> 7. Any configuration changes must maintain backwards compatibility (i.e.,
> if we move to URLs instead of N different variables, we still have to
> support the old format somehow for some time).



More information about the OpenStack-dev mailing list