On 29/08/14 16:15, Rob Godfrey wrote:
On 29 August 2014 16:50, Fraser Adams <[email protected]> wrote:

Back to my point about APIs though, one thing that I think is important is
to be able to efficiently "multiplex" messages. In the current subject
based world I could have a number of consumers to amq.direct called Q1, Q2,
Q3 etc. and in JMS I could create a simple producer that had "amq.direct"
as the JMS destination. From my client's perspective I can create that at
startup time and send different messages to different places just by
setting the subject.

Except that there is no way to set the subject in JMS, other than through
some Qpid specific magic that doesn't actually exist in any AMQP 1.0 JMS
client to my knowledge :-).  The qpid.subject hack (which then had to be
changed again because qpid.subject is an illegal name in JMS) was an 0-10
Addressing Syntax specific addition to the Qpid JMS client.  You couldn't
use that if you were using AMQP 0-9-1, for instance.
This sort of thing is exactly why I said that it's really important to consider the APIs and to hopefully try to consider all the various APIs, because they all have different quirks/strengths/weaknesses - remember me suggesting that lists probably weren't a good idea in AMQP 1.0 Management 'cause lists are a pain in the butt with JMS (though dead easy with my JavaScript Messenger ;->).

TBH I'm quite glad this subject (heh, heh, heh) has come up, it's a good time to get this sort of discussion in the open, as I said earlier one of the things I'm keen on is the maximum consistency across the Qpid C++ and Java offerings. if we can't do that then we're probably not setting the best example in terms of cross-vendor interoperability.


I wouldn't want to have to create new Destination objects every time that
I wanted to send a message!! I know that "to" is an immutable AMQP 1.0
property, but what's the API mapping - and what should it contain??


So, JMS is clearly rubbish in the way that it does topics :-)
It's pretty pants at handling lists too and MapMessage needs an alternative that plays better with Collections etc. etc. etc. in fairness I've still got a bit of a soft spot for JMS, but it's quite irritating too.

In my head I am rewriting every AMQP 0.x exchange + routing-key combination as the address "exchange/routing-key" in AMQP 1.0 and conversely any AMQP 1.0 address of foo/bar as the "exchange" foo and "routing-key" bar in AMQP 0.x. This obviously may require the broker to dynamically pretend that such an entity as "foo" exists, in order to service the requests of an AMQP 0.x client. -- Rob

That's not an unreasonable mental model, but such a model isn't universally supported at present and there's the potential ambiguity over whether an address that *looks like* "exchange/routing-key" is *really* that or a node called "exchange/routing-key", which is equally valid and

Indeed using an address of that form in Messenger to the C++ Broker causes it to barf

./qpid-config.js -r queues
amqp://guest:guest@localhost:5673/qmf.default.direct/broker
LINK ERROR (amqp:not-found) Node not found: qmf.default.direct/broker


I've also just managed to add a queue called "exchange/routing-key" :-)
and another called "amq.direct/routing-key"

probably not a good idea, bit it's arguably perfectly valid as an AMQP 1.0 node name.


All this routing stuff is just a wee bit subtle, especially when you factor in all the various API quirks.

Frase







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

Reply via email to