Hi Gordon,
I'm afraid that I've not had time yet to begin my journey down the AMQP 1.0 path. I don't suppose that you can point me to a quick reference that points to the key differences? I'll take a look at the spec when I get a bit of time, but I'd quite like something quick and dirty to help bootstrap me.

I skimmed through your document and I'm afraid that one thing gave me a bit of a panic:

"
The x-bindings property is not currently supported for AMQP 1.0 in
nodes or links. This has really been a question of priorities rather
than ruling out any mapping. Though I don't think a generic binding
solution is appropriate for the 1.0 implementation, I'm eager to here
of use cases that would be affected here and see how best to address
them.
"

So you ask for use cases well I use the headers exchange almost exclusively in my operational system and my Addresses are of the form:

string address = "testqueue; {create: receiver, node: {x-declare: {arguments: {'qpid.policy_type': ring, 'qpid.max_size': 500000000}}, x-bindings: [{exchange: 'amq.match', queue: 'testqueue', key: 'data1', arguments: {x-match: all, data-service: amqp-delivery, item-owner: fadams}}]}}";

The actual matches are a generally a degree more complex which is one of the reasons I use the headers exchange, but the basic gist is that I'm creating non exclusive queues on demand by a consumer (basically producers "fire and forget" to amq.match and consumers "self-service" subscribe to data that they are interested in based on its data signature). I generally use the policy_type and max_size too (usually 2GB queues in reality).

I'm afraid that I don't really understand what you mean by "Though I don't think a generic binding solution is appropriate for the 1.0 implementation". Perhaps an AMQP 1.0 guide for AMQP 0.10 users might help me there :-) From the little I've gathered AMQP 1.0 doesn't have the same distinction between exchanges and queues and those are both "nodes" in AMQP 1.0?? But I'd assume that the same messaging patterns are available?? From a previous post by Rob in a Java context he mentioned that it's possible to consume directly from an exchange in AMQP 1.0 but equally he said that in implementation terms this was done via a temporary queue - that sounds pretty analogous to how "exchange routes" in the C++ broker actually have queues created under the hood i.e. only "conceptually" consuming directly off an exchange and not "really" - actually I have big issues with not being able to control the size/policy/flow-control of temporary queues, one of the reasons I always use queue routes is because I need to control this stuff - but that's an aside here.


One thing that's not clear from your write up is whether the x-bindings property you are talking about is in the messaging client, or whether it is the underlying x-bindings property that gets passed to the broker. I'm guessing the latter which would also affect AddressStrings created by JMS consumers and via QMF? (Although I use the C++ broker most of my consumers use JMS).

I've got lots of consumers and some reasonably complex match scenarios so I I have to have them modify their AddressStrings there's going to be a bit of integration pain. I suspect that there will be anyway - at the very least I guess the JMS "java.naming.factory.initial" is different - for AMQP 1.0 it looks like it's "org.apache.qpid.amqp_1_0.jms.jndi.PropertiesFileInitialContextFactory"


Actually that's got me thinking too there seems to be an inconsistency between qpid::messaging and JMS when it comes to selecting the protocol. With JMS it seems to be based on the Connection Factory, but with qpid::messaging you say "The protocol used is selected at runtime via the 'protocol' connection property" - I'm guessing that's set in the connection options map that gets passed to the Connection constructor? If analogous patterns were being followed then that would suggest that for JMS the protocol should be being selected via on of the options in the ConnectionURL, I guess in the brokerList? I know that you are primarily talking about C++ here, but you know me and bugbears about consistency and cohesion :-)

One other thing, AMQP 1.0 support is derived from Proton, right? That doesn't seem to be the case for Java (at the moment at least) there seems to be amqp-1.0-client and amqp-1.0-client-jms in <qpid>/java in trunk. That's pretty confusing (well to me at least).

Frase


On 05/04/13 11:27, Gordon Sim wrote:
Attached are some notes on the current status of the AMQP 1.0 support for qpid::messaging and qpidd, describing how it is currently implemented and highlighting some of the missing features and changes with respect to addressing options. As ever, I am open to any feedback, questions, criticisms or alternate opinions...

--Gordon.


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

Reply via email to