You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@qpid.apache.org by "Matej Lesko (JIRA)" <ji...@apache.org> on 2017/02/23 18:09:44 UTC

[jira] [Created] (DISPATCH-641) Make containerId attribute work with clients

Matej Lesko created DISPATCH-641:
------------------------------------

             Summary: Make containerId attribute work with clients
                 Key: DISPATCH-641
                 URL: https://issues.apache.org/jira/browse/DISPATCH-641
             Project: Qpid Dispatch
          Issue Type: Improvement
          Components: Router Node
    Affects Versions: 0.7.0
            Reporter: Matej Lesko


During verification of issue https://issues.apache.org/jira/browse/DISPATCH-628
I found out that when I set this _containerId_ in the clients, router can see it but it can not route it. 

E.g. I have sender with the _containerId_ "xxx" and autoLink entity with the _containerId_ "xxx" ->
this autoLink does not activate in this scenario. 

Simply said when I have sender/receiver with the _containerId_ set and matching the _containerId_ attribute in the configuration file, it does 
*not* accept the connection. e.g. _linkRoute_ usage ends with the  "Link error: No route to the destination node".

Possible configuration to use(same applies for _autoLink_ entities)
{noformat}
router {
    mode: standalone
    id: Router.A
}

listener {
    host: 0.0.0.0
    port: amqp
    authenticatePeer: no
    saslMechanisms: ANONYMOUS
}

connector {
    name: broker
    host: MY-HOST
    role: route-container
    port: amqp
}

address {
    prefix: jms.queue
    waypoint: yes
    distribution: balanced
}

linkRoute {
    name: myqueueIn
    dir: in
    prefix: jms.queue.myqueue
    connection: broker
    containerId: dtest
}

linkRoute {
    name: myqueueOut
    dir: out
    prefix: jms.queue.myqueue
    connection: broker
    containerId: dtest
}

log {
    module: MESSAGE
    enable: debug
    timestamp: yes
}
{noformat}

Right now, router works only as described e.g. here [https://issues.apache.org/jira/browse/DISPATCH-640|DISPATCH-640]

In such a case, it is important to set a *name* (aka container_id) for the broker, matching the value of _containerId_ attribute of the chosen linkRoute/autoLink entity. Then all messages are routed to this broker, ignoring the value of _container_id_ of the actual client itself.

Request is that this value would be used to "specify" which clients would actually be allowed to make a connection to the broker.

Usages:
Scenario A:
1. Client has containerId=xxx, address="myqueue"
2. linkRoute has containerId=yyy, prefix="myqueue"
resolution: connection won't be established, not matching containerId

Scenario B:
1. Client has containerId=xxx, address="myqueue"
2. linkRoute has containerId=xxx, prefix="myqueue"
resolution: connection will be established, client sends messages to the broker

As described in [https://issues.apache.org/jira/browse/DISPATCH-639|DISPATCH-639]  -> 
"if there is a container field, use it otherwise use the connection_field to specify the connection to use."

This could be elevated to the use case, where an condition as:
"if there is container field and also connection_field specified, demand matching containerId from the client"









--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@qpid.apache.org
For additional commands, e-mail: dev-help@qpid.apache.org