> > > > Target(exchange='nova', topic='compute') > > Target(exchange='nova', topic='compute', server='compute1') > > Target(exchange='nova', topic='compute', fanout=True) > > > > In the first case, any compute service will do. In the second, you want > > to invoke the method on a particular compute service. The the latter > > case, you want to invoke it on all compute services. > > This really helps understand some of what I've read. Thanks. > > It seems that exchange is really just a high level qualifier of a > namespace for the most part. > > Q: if in the above last Target, fanout was false (fanout=False) would that > mean that you are expecting queue type behavior in that instance? i.e. I > want only one consumer, I don't care which one, but only one consumer to > service this request? So that syntax would change the semantics from > pub/sub topic (i.e. all subscribers to the topic get it) to a queue > semantic (first consumer to acquire the message causes it to dequeue and be > not available to others? >
Correct. Provided fanout=False, the behavior would be the same as with the first example. Also, I should add that there is a module in Oslo called the Matchmaker to allow consumers to subscribe their addresses to virtual queues in a peer-to-peer setting. This is presently used by the ZeroMQ driver. Because a pure peer-to-peer system has no centralized broker, there needs to be some peer tracker to provide an analogue to a queue. It would be possible for an AMQP 1.0 based driver to leverage this module. -- Regards, Eric Windisch
_______________________________________________ OpenStack-dev mailing list OpenStack-dev@lists.openstack.org http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev