Good call, sounds like a plan. Here is the link and a copy of the latest set of my notes trying to do the same.

ref: http://pastebin.com/0WaMT8Yx


Addressing Behavior Use Cases [Draft]
—————————————————
1. Destination addresses will be stored in canonical form without prefixes
    ie.  queue:///foo will be stored as name=“foo” type=“anycast”
          topic://bar will be stored as name=“bar” type=“multicast”

2. Destinations must specify a type in the configuration

3. Destinations may be auto-created when the intersection of protocol support, broker-side configuration and user permissions permits

4. [JMS] session.createQueue(“foo”) must be translated to the fully qualified name of “queue:///foo” in the client provider library (or some internal core protocol/api equiv)

5. [JMS] session.createQueue(“queue:///foo”) and session.createQueue(“queue://foo”) and session.createQueue(“foo”) refer to the same destination

6. [STOMP and AMQP] will default to “anycast” address type (configurable at broker transport?) during lookup and throw an exception if there is a name collision when using unqualified destination name.
    ie. User specifies “blah” and both types exist

7. [MQTT] will default to topic name unless fully qualified to use the queue address (needs research.. MQTT may not allow URI format in destination name)

8. [STOMP, AMQP and other protocols] will support appropriate prefix mapping to their destination name format. For example: /queue/foo and /topic/foo will be translated to foo type=“any cast” and foo type=“multicast” internally

Questions:

Q-0: Does Artemis support the separation of queue-like and topic-like addresses? ie.. foo type=“anycast” and foo type=“multicast” can co-exist and are distinct addresses. (Not currently the behavior)

Q-1: What destination type should be created by default for STOMP, AMPQ and MQTT unqualified addresses?

Q-2: What destination type should be looked up by default for STOMP, AMPQ and MQTT of unqualified addresses?

Q-3: How would queue://$broker/$host fully qualified destinations names be supported in STOMP, AMQP and MQTT?

Discussions:

D-1: jbertram would like to table support for Q-3 fully qualified names (host+destination) until after ARTEMIS-780 is done. The reasoning is to keep things simple and avoid uncertain future complexity.

D-2: mattrpav recommends planning for fully qualified names before 2.0 is released (doesn’t need to be part of 780) in order in order to avoid any impacts post-2.0. The reasoning is that in order for Artemis to compete as a replacement with majority of EMS products (IBM MQ, Tibco EMS, etc) host+destination routing is a must-have.


On 11/18/16 11:29 AM, Martyn Taylor wrote:
All,

I think we need to take a step back here and try to capture all the use
cases discussed thus far, we've had a few use cases outlined here and
plenty of discussion @ #apache-activemq channel.  I think it's difficult to
discuss solutions until everyone is on the same page when it comes to the
requirements.

I'll start pulling this together, and reply here once I am done.

Thanks for all the input so far.

On Fri, Nov 18, 2016 at 4:00 PM, Matt Pavlovich <[email protected]> wrote:

   No. What I am thinking is that all addresses are prefixless. What you are
really saying when you say “queue://foo” is not that I want to
send/consume
to/from an address “queue://foo” but that you want to send/consume to/from
an address named “foo” and that you expect queue semantics on that
address.

If you don’t specify semantics with the address name. For example, let’s
say in MQTT you send to “foo”. This message would be sent to 1 consumer
that have specified “queue://foo” and all consumers that specified
“topic://foo”. As far as Artemis is concerned the address is just "foo".
The prefixes are added in the clients, and used by the protocol managers
to
ask Artemis for certain behaviours.

How do you see this use case working out? If a JMS client sends a message
to session.createQueue("foo") and Artemis auto-creates a "foo"
type="anycast". Then two MQTT clients (MQTT being topic-based) come around
a subscribe to "foo" do the MQTT clients round-robin the data or each get a
copy of the message?.
Can we shelve this for now and pick it up once we have outlined all the use
cases.


Reply via email to