[openstack-dev] Oslo messaging vs zaqar

Gordon Sim gsim at redhat.com
Mon Sep 22 12:35:37 UTC 2014


On 09/22/2014 10:56 AM, Flavio Percoco wrote:
> What I meant is that oslo.messaging is an rpc library and it depends on
> few very specific message delivery patterns that are somehow tight/based
> on AMQP semantics.

RPC at it's core is the request-response pattern which is directly 
supported by many messaging technologies and implementable over almost 
any form of communication (it's mostly just convention for addressing).

In addition the oslo.messaging model offers the ability to invoke on one 
of a group of servers, which is the task-queue pattern and again is very 
general.

One-way messages are also supported either unicast (to a specific 
server) or broadcast (to all servers in a group).

I don't think any of these patterns are in any way tightly bound or 
specific to AMQP.

In fact Zaqar offers (mostly) the same patterns (there is no way to 
indicate the 'address' to reply to defined by the spec itself, but that 
could be easily added).

> Implementing Zaqar's API in oslo.messaging would be
> like trying to add an AMQP driver to Zaqar.

I don't think it would be. AMQP and Zaqar are wire protocols offering 
very similar levels of abstraction (sending, consuming, browsing, 
acknowledging messages). By contrast oslo.messaging is a language level 
API, generally at a slightly higher level of abstraction, mapping method 
invocation to particular messaging patterns between processes.

Implementing Zaqar's model over oslo.messaging would be like 
implementing AMQP's model over oslo.messaging, i.e. reimplementing a 
general purpose message-oriented abstraction on top of an API intended 
to hide such a model behind message invocation. Though technically 
possible it seems a little pointless (and I don't think anyone is 
suggesting otherwise).

Zaqar drivers are really providing different implementations of 
(distributed) message storage. AMQP (and I'm talking primarily about 
version 1.0) is not intended for that purpose. It's intended to control 
the transfer of messages between processes. Exposing AMQP as an 
alternative interface for publishing/receiving/consuming messages 
through Zaqar on the other hand would be simple.



More information about the OpenStack-dev mailing list