On 03/05/2014 02:08 AM, smartdog wrote:
We need post some messages to Azure Service Bus and figure it would be nice
(in case Azure service bus is down) to post messages to the local qpid
broker first and then let the broker propagate messages to Azure.

I tried with

qpid-route -d queue add azureuser/[email protected]
127.0.0.1:5672 amq.fanout brokerqueue

and got Failed: VersionError - client: 0-10, server: 0-0

It seems related with version conflict (Azure supports amqp 1.0, while
broker is qmap 0-10)

Any idea or this just won't work? Thanks.

The federation features controlled by qpid-route are based on AMQP 0-10.

There is a similar mechanism for AMQP 1.0 but I haven't ever tested it against ServiceBus, though it hasn't been used much yet.

To establish links (in either direction), you first need to create a 'domain' defining the connection details for the process you want to connect to (in your case the service bus). This of course also assumes that the AMQP 1.0 module is loaded.

If you are using qpid-config from 0.26 you can do:

qpid-config -b 127.0.0.1:5672 add domain my-servicebus --argument url=namespace.servicebus.windows.net --argument username=azureuser --argument password=password --argument sasl_mechanisms=PLAIN

If you can't use the latest qpid-config, you can use the qpidt testing tool from 0.24[1].

Now you have a domain you can create incoming or outgoing links to the service identified by the domain. Again you can use qpid-config for this since 0.26, or qpidt if you don't have the latest version of that.

qpid-config add incoming my-in-link --argument domain=my-servicebus --argument source=node-on-servicebus --argument target=node-on-qpidd

Which should cause messages from node-on-servicebus to be pulled into qpidd, into a node (queue or exchange) called node-on-qpidd.

You can also create links in the other direction, where the type is outgoing rather than incoming. (You can also create senders or receivers on a qpidd session to/from e.g. a-node@my-servicebus, and qpid will establish links to the node on service bus over which messages, flow and dispositions are relayed. I.e. you can send to or receive from any node on the service bus, via qpidd).

One current limitation of this 1.0 based mechanism is that it won't try to re-establish any failed connections.

--Gordon

[1] http://svn.apache.org/viewvc/qpid/branches/0.24/qpid/cpp/src/tests/qpidt?view=markup, with this tool the format is slightly different, e.g.

qpidt create domain my-servicebus url=namespace.servicebus.windows.net username=azureuser password=password sasl_mechanisms=PLAIN


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to