qpid-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Ganesh Murthy <gmur...@redhat.com>
Subject Re: [Qpid Dispatch] Manage Dispatch router from Qpid Jms
Date Wed, 22 Feb 2017 16:12:23 GMT


----- Original Message -----
> From: "Adel Boutros" <Adelboutros@live.com>
> To: users@qpid.apache.org
> Sent: Wednesday, February 22, 2017 10:58:42 AM
> Subject: Re: [Qpid Dispatch] Manage Dispatch router from Qpid Jms
> 
> Hello,
> 
> 
> One more issue: I am trying to replicate a "qdstat -a" to get the statistics
> of the addresses.
> 
> It seems the 'name' and 'identity' fields returned are always prefixed by
> some weird combinations "L" or "M0" or "L$", etc.  Is this expected?
> 

The "L" or "M" etc are used by qdstat to display some additional information in its output. 

If you look in the qdstat python program, you will see the following - 

    def _addr_class(self, addr):
        if not addr:
            return ""
        if addr[0] == 'M' : return "mobile"
        if addr[0] == 'R' : return "router"
        if addr[0] == 'A' : return "area"
        if addr[0] == 'L' : return "local"
        if addr[0] == 'T' : return "topo"
        if addr[0] == 'C' : return "link-in"
        if addr[0] == 'D' : return "link-out"
        return "unknown: %s" % addr[0]

But, I agree that the addresses themselves should not have these prefixes.

There is a JIRA for this already - 

https://issues.apache.org/jira/browse/DISPATCH-450

I am not sure we can get to this before the 0.8 release but we will try.

In the meantime, you could use the same logic that qdstat uses.

Thanks.

> 
> Output
> 
> --------------
> 
> attributeNames: [name, identity, type, key, distribution, inProcess,
> subscriberCount, remoteCount, containerCount, remoteHostRouters,
> deliveriesIngress, deliveriesEgress, deliveriesTransit,
> deliveriesToContainer, deliveriesFromContainer, transitOutstanding,
> trackedDeliveries]
> 
> results: [[Lqdhello, Lqdhello, org.apache.qpid.dispatch.router.address,
> Lqdhello, flood, 1, 0, 0, 0, [], 0, 0, 0, 0, 1379, null, 0], [Lqdrouter,
> Lqdrouter, org.apache.qpid.dispatch.router.address, Lqdrouter, flood, 1, 0,
> 0, 0, [], 0, 0, 0, 0, 0, null, 0], [Lqdrouter.ma, Lqdrouter.ma,
> org.apache.qpid.dispatch.router.address, Lqdrouter.ma, multicast, 1, 0, 0,
> 0, [], 0, 0, 0, 0, 0, null, 0], [Tqdrouter, Tqdrouter,
> org.apache.qpid.dispatch.router.address, Tqdrouter, flood, 1, 0, 0, 0, [],
> 0, 0, 0, 0, 46, null, 0], [Tqdrouter.ma, Tqdrouter.ma,
> org.apache.qpid.dispatch.router.address, Tqdrouter.ma, multicast, 1, 0, 0,
> 0, [], 0, 0, 0, 0, 2, null, 0], [M0$management, M0$management,
> org.apache.qpid.dispatch.router.address, M0$management, closest, 1, 0, 0, 0,
> [], 7, 0, 0, 7, 0, null, 0], [L$management, L$management,
> org.apache.qpid.dispatch.router.address, L$management, closest, 1, 0, 0, 0,
> [], 0, 0, 0, 0, 0, null, 0], [L$_management_internal,
> L$_management_internal, org.apache.qpid.dispatch.router.address,
> L$_management_internal, closest, 1, 0, 0, 0, [], 0, 0, 0, 0, 0, null, 0],
> [L$displayname, L$displayname, org.apache.qpid.dispatch.router.address,
> L$displayname, closest, 1, 0, 0, 0, [], 0, 0, 0, 0, 0, null, 0],
> [M0$management_reply_queue, M0$management_reply_queue,
> org.apache.qpid.dispatch.router.address, M0$management_reply_queue,
> balanced, 0, 1, 0, 0, [], 0, 0, 0, 0, 0, null, 0]]
> 
> 
> 
> Code
> 
> ---------------
> 
> ConnectionFactory connectionFactory = new
> JmsConnectionFactory("amqp://green-lx-slave1:10501");
> Connection managementConnection = connectionFactory.createConnection();
> Session managementSession = managementConnection.createSession(false,
> Session.AUTO_ACKNOWLEDGE);
> Queue managementQueue = managementSession.createQueue("$management");
> MessageProducer managementProducer =
> managementSession.createProducer(managementQueue);
> Queue replyToQueue =
> managementSession.createQueue("$management_reply_queue");
> MessageConsumer managementConsumer =
> managementSession.createConsumer(replyToQueue);
> managementConnection.start();
> 
> // An object message should be used because the Map and List content must be
> encoded with AMQP encoding.
> ObjectMessage objectMessage = managementSession.createObjectMessage();
> 
> // Setting management message header properties
> // JMS_AMQP_TYPED_ENCODING is a temporary solution that is used by qpid-jms
> to encode the message content with AMQP encoding before sending it.
> objectMessage.setBooleanProperty("JMS_AMQP_TYPED_ENCODING", true);
> objectMessage.setStringProperty("operation", "QUERY");
> objectMessage.setStringProperty("type",
> "org.apache.qpid.dispatch.router.address");
> objectMessage.setStringProperty("name", "self");
> objectMessage.setJMSReplyTo(replyToQueue);
> 
> managementProducer.send(objectMessage);
> 
> ObjectMessage replyMessage = (ObjectMessage) managementConsumer.receive();
> 
> Map<String, Object> resultObject = (Map<String, Object>)
> replyMessage.getObject();
> for (Map.Entry<String, Object> entry : resultObject.entrySet()) {
>     System.out.println(entry.getKey() + ": " + entry.getValue());
> }
> 
> managementConnection.close();
> 
> Regards,
> 
> Adel
> ________________________________
> From: Adel Boutros <Adelboutros@live.com>
> Sent: Wednesday, February 22, 2017 12:33:32 PM
> To: users@qpid.apache.org
> Subject: Re: [Qpid Dispatch] Manage Dispatch router from Qpid Jms
> 
> Hello guys,
> 
> 
> My basic JMS API is almost ready. I will share it with you soon to have your
> feedback.
> 
> 
> However, I tried one last thing by getting a random queue name and using it
> as management reply queue to allow multiple configuration sessions
> simultaneously but it didn't work.
> 
> 
> //This doesn't work and crashes the dispatch router
> 
> TemporaryQueue temporaryQueue = managementSession.createTemporaryQueue();
> replyToQueue = managementSession.createQueue(temporaryQueue.getQueueName());
> managementConsumer = managementSession.createConsumer(replyToQueue);
> 
> //This is the only thing working
> replyToQueue = managementSession.createQueue("HARD_CODED_REPLY_QUEUE");
> managementConsumer = managementSession.createConsumer(replyToQueue);
> 
> 
> Can I have your input on the above?
> 
> Regards,
> Adel
> 
> 
> ________________________________
> From: Rob Godfrey <rob.j.godfrey@gmail.com>
> Sent: Wednesday, February 15, 2017 4:46:59 PM
> To: users@qpid.apache.org
> Subject: Re: [Qpid Dispatch] Manage Dispatch router from Qpid Jms
> 
> On 15 February 2017 at 16:07, Robbie Gemmell <robbie.gemmell@gmail.com>
> wrote:
> 
> > On 15 February 2017 at 14:15, Adel Boutros <Adelboutros@live.com> wrote:
> > > Hello guys,
> > >
> > >
> > > Based on the discussion, we are currently writing a Java API based on
> > JMS to configure the dispatch router. I have so far managed to do the
> > following:
> > >
> > > * Create, Read, Delete addresses
> > >
> > > * Create, Read, Delete connectors
> > >
> > >
> > > Config:
> > >
> > > Dispatch Router 0.7.0
> > >
> > > JMS 0.11.1
> > >
> > >
> > > And I have noticed some problems and differences:
> > >
> > >
> > > 1) It seems some calls return ObjectMessage and some TextMessage (This
> > is on the side of the consumer in the replyTo)
> > >
> > > For example, creating twice the same queue will fail but the second call
> > will return a JmsTextMessage with an empty body and status code 400
> > >
> >
> > The client treats messages with an amqp-value sectioning containing
> > null/nothing as a TextMessage with null value if they arent annotated
> > to say otherwise, I'd guess thats where that comes from.
> >
> > >
> > > 2) Returned statusCode differs between Connector and Address
> > >
> > > Object statusCodeValue = replyMessage.getObjectProperty("statusCode");
> > >
> > >
> > > * Connector operations return java.lang.Long
> > > * Address operations return org.apache.qpid.proton.amqp.UnsignedInteger
> > >
> >
> > The router is presumably sending different values back for the
> > different operations here, a long and a uint. The router should
> > perhaps be consistent, and the client should perhaps not be returning
> > the uint object either way.
> >
> > The last draft of the management spec seems to say the status code
> > should be 'integer', im not clear if it means int (not uint)
> > specifically, or just any integral type value.
> >
> >
> The specification should definitely say which type should - so we'll fix
> that in the next draft.  I'd suggest we should int (in AMQP terms) leading
> to a java.lang.Integer type in the property you see through Java.
> 
> -- Rob
> 
> 
> 
> > >
> > > 3) Create connector twice makes dispatch router crash.  I don't have the
> > issue when creating addresses.
> > > On the second create call,  JMS client receives a normal reply
> > containing a statusCode of an exception. After I close the connection to
> > the dispatch router via JMS (connection.close), I have the below crash
> > >
> > > (gdb) where
> > > #0  0x00007f27194448a5 in raise () from /lib64/libc.so.6
> > > #1  0x00007f2719446085 in abort () from /lib64/libc.so.6
> > > #2  0x00007f27194827b7 in __libc_message () from /lib64/libc.so.6
> > > #3  0x00007f27194880e6 in malloc_printerr () from /lib64/libc.so.6
> > > #4  0x00007f271a40f109 in qd_hash_remove_by_handle (h=Unhandled dwarf
> > expression opcode 0xf3
> > > ) at /qpid-dispatch-0.7.0/src/hash.c:320
> > > #5  0x00007f271a42247d in qdr_route_check_id_for_deletion_CT
> > (cid=0x7f2708055850, core=Unhandled dwarf expression opcode 0xfa
> > > ) at /qpid-dispatch-0.7.0/src/router_core/route_control.c:57
> > > #6  0x00007f271a41e8d3 in qdr_connection_closed_CT (core=0x13d2d30,
> > action=Unhandled dwarf expression opcode 0xf3
> > > ) at /qpid-dispatch-0.7.0/src/router_core/connections.c:961
> > > #7  0x00007f271a423f30 in router_core_thread (arg=0x13d2d30) at
> > /qpid-dispatch-0.7.0/src/router_core/router_core_thread.c:83
> > > #8  0x00007f2719f8c851 in start_thread () from /lib64/libpthread.so.0
> > > #9  0x00007f27194fa90d in clone () from /lib64/libc.so.6
> > >
> > >
> > > Wed Feb 15 12:20:52 2017 AGENT (error) Error performing CREATE:
> > org.apache.qpid.dispatch.connector: Duplicate value 'connector/
> > 127.0.0.1:5915:dispatch_management_connector_test' for unique attribute
> > 'identity'
> > > *** glibc detected *** /Dispatch/sbin/qdrouterd: double free or
> > corruption (fasttop): 0x00007f2708033f10 ***
> > > ======= Backtrace: =========
> > > /lib64/libc.so.6(+0x760e6)[0x7f27194880e6]
> > > /target/qpid-dispatch-rel/lib/qpid-dispatch/libqpid-dispatch
> > .so(qd_hash_remove_by_handle+0x29)[0x7f271a40f109]
> > > /target/qpid-dispatch-rel/lib/qpid-dispatch/libqpid-dispatch
> > .so(+0x3547d)[0x7f271a42247d]
> > > /target/qpid-dispatch-rel/lib/qpid-dispatch/libqpid-dispatch
> > .so(+0x318d3)[0x7f271a41e8d3]
> > > /target/qpid-dispatch-rel/lib/qpid-dispatch/libqpid-dispatch
> > .so(router_core_thread+0x230)[0x7f271a423f30]
> > > /lib64/libpthread.so.0(+0x7851)[0x7f2719f8c851]
> > > /lib64/libc.so.6(clone+0x6d)[0x7f27194fa90d]
> > > ======= Memory map: ========
> > > 00400000-00403000 r-xp 00000000 fd:01 7735642
> > /Dispatch/sbin/qdrouterd
> > > 00603000-00604000 rw-p 00003000 fd:01 7735642
> > /Dispatch/sbin/qdrouterd
> > > 01113000-01458000 rw-p 00000000 00:00 0
> > [heap]
> > > 7f26f8000000-7f26f805c000 rw-p 00000000 00:00 0
> > > 7f26f805c000-7f26fc000000 ---p 00000000 00:00 0
> > > 7f26fc000000-7f26fc043000 rw-p 00000000 00:00 0
> > > 7f26fc043000-7f2700000000 ---p 00000000 00:00 0
> > > 7f2700000000-7f2700085000 rw-p 00000000 00:00 0
> > > 7f2700085000-7f2704000000 ---p 00000000 00:00 0
> > > 7f27073e9000-7f27073ff000 r-xp 00000000 fd:00 524293
> >  /lib64/libgcc_s-4.4.7-20120601.so.1
> > > 7f27073ff000-7f27075fe000 ---p 00016000 fd:00 524293
> >  /lib64/libgcc_s-4.4.7-20120601.so.1
> > > 7f27075fe000-7f27075ff000 rw-p 00015000 fd:00 524293
> >  /lib64/libgcc_s-4.4.7-20120601.so.1
> > > 7f27075ff000-7f2707600000 ---p 00000000 00:00 0
> > > 7f2707600000-7f2708000000 rw-p 00000000 00:00 0
> > > 7f2708000000-7f270805a000 rw-p 00000000 00:00 0
> > > 7f270805a000-7f270c000000 ---p 00000000 00:00 0
> > > 7f270c04a000-7f270c04f000 r-xp 00000000 fd:00 524322
> >  /lib64/libnss_dns-2.12.so
> > > 7f270c04f000-7f270c24e000 ---p 00005000 fd:00 524322
> >  /lib64/libnss_dns-2.12.so
> > > 7f270c24e000-7f270c24f000 r--p 00004000 fd:00 524322
> >  /lib64/libnss_dns-2.12.so
> > > 7f270c24f000-7f270c250000 rw-p 00005000 fd:00 524322
> >  /lib64/libnss_dns-2.12.so
> > > 7f270c250000-7f270c251000 ---p 00000000 00:00 0
> > > 7f270c251000-7f270cc51000 rw-p 00000000 00:00 0
> > > 7f270cc51000-7f270cc52000 ---p 00000000 00:00 0
> > > 7f270cc52000-7f270d652000 rw-p 00000000 00:00 0
> > > 7f270d652000-7f270d65e000 r-xp 00000000 fd:00 524324
> >  /lib64/libnss_files-2.12.so
> > > 7f270d65e000-7f270d85e000 ---p 0000c000 fd:00 524324
> >  /lib64/libnss_files-2.12.so
> > > 7f270d85e000-7f270d85f000 r--p 0000c000 fd:00 524324
> >  /lib64/libnss_files-2.12.so
> > > 7f270d85f000-7f270d860000 rw-p 0000d000 fd:00 524324
> >  /lib64/libnss_files-2.12.so
> > > 7f270d86a000-7f270d86b000 ---p 00000000 00:00 0
> > > 7f270d86b000-7f270e3ac000 rw-p 00000000 00:00 0
> > > 7f270e3ac000-7f270e3b1000 r-xp 00000000 00:16 4090944
> > /python278/lib/python2.7/lib-dynload/select.so
> > > 7f270e3b1000-7f270e5b0000 ---p 00005000 00:16 4090944
> > /python278/lib/python2.7/lib-dynload/select.so
> > > 7f270e5b0000-7f270e5b2000 rw-p 00004000 00:16 4090944
> > /python278/lib/python2.7/lib-dynload/select.so
> > > 7f270e5b2000-7f270e5b6000 r-xp 00000000 00:16 5568743
> > /python278/lib/python2.7/lib-dynload/_lsprof.so
> > > 7f270e5b6000-7f270e7b5000 ---p 00004000 00:16 5568743
> > /python278/lib/python2.7/lib-dynload/_lsprof.so
> > > 7f270e7b5000-7f270e7b6000 rw-p 00003000 00:16 5568743
> > /python278/lib/python2.7/lib-dynload/_lsprof.so
> > > 7f270e7b6000-7f270e8b7000 rw-p 00000000 00:00 0
> > > 7f270e8b7000-7f270e8bc000 r-xp 00000000 00:16 6394000
> > /python278/lib/python2.7/lib-dynload/strop.so
> > > 7f270e8bc000-7f270eabb000 ---p 00005000 00:16 6394000
> > /python278/lib/python2.7/lib-dynload/strop.so
> > > 7f270eabb000-7f270eabd000 rw-p 00004000 00:16 6394000
> > /python278/lib/python2.7/lib-dynload/strop.so
> > > 7f270eabd000-7f270eafd000 rw-p 00000000 00:00 0
> > > 7f270eafd000-7f270eb00000 r-xp 00000000 00:16 5568749
> > /python278/lib/python2.7/lib-dynload/fcntl.so
> > > 7f270eb00000-7f270ecff000 ---p 00003000 00:16 5568749
> > /python278/lib/python2.7/lib-dynload/fcntl.so
> > > 7f270ecff000-7f270ed01000 rw-p 00002000 00:16 5568749
> > /python278/lib/python2.7/lib-dynload/fcntl.so
> > > 7f270ed01000-7f270ed04000 r-xp 00000000 00:16 5568739
> > /python278/lib/python2.7/lib-dynload/_random.so
> > > 7f270ed04000-7f270ef03000 ---p 00003000 00:16 5568739
> > /python278/lib/python2.7/lib-dynload/_random.so
> > > 7f270ef03000-7f270ef04000 rw-p 00002000 00:16 5568739
> > /python278/lib/python2.7/lib-dynload/_random.so
> > > 4272 Aborted                 (core dumped)
> > >
> > >
> > > Regards,
> > > Adel
> > >
> > >
> > > ________________________________
> > > From: Rob Godfrey <rob.j.godfrey@gmail.com>
> > > Sent: Monday, February 6, 2017 7:09 PM
> > > To: users@qpid.apache.org
> > > Subject: Re: [Qpid Dispatch] Manage Dispatch router from Qpid Jms
> > >
> > > On 6 February 2017 at 19:03, Robbie Gemmell <robbie.gemmell@gmail.com>
> > > wrote:
> > >
> > >> On 6 February 2017 at 17:50, Rob Godfrey <rob.j.godfrey@gmail.com>
> > wrote:
> > >> > On 6 February 2017 at 18:44, Ted Ross <tross@redhat.com> wrote:
> > >> >
> > >> >> It seems odd that the client creates a _sender_ to the temporary
> > queue
> > >> >> that it will never send messages _to_ but will receive messages
> > _from_.
> > >> >>
> > >> >>
> > >> > This is because JMS semantics require the temporary node to have a
> > >> lifetime
> > >> > scoped to the session (not a link), so the JMS client has to create a
> > >> > synthetic link which it uses simply to manage the lifetime of the
> > dynamic
> > >> > node.  In order to not cause unintentional assigning of messages to a
> > >> link
> > >> > that will never actually be used for consumption, a sending link is
> > used.
> > >> > Note that in general JMS would expect that you should be able to send
> > to
> > >> a
> > >> > temporary queue created in this way (since the point of temporary
> > queues
> > >> is
> > >> > to use as a reply to)
> > >> >
> > >>
> > >> Not really important here, but the lifetime is scoped to the
> > >> Connection, not Session (agghhh JMS... :P)
> > >>
> > >
> > > That's what I thought I was typing... obviously my fingers were not
> > > cooperating with my brain at that point :-)
> > >
> > > -- Rob
> > >
> > >
> > >>
> > >> >
> > >> >> Anyway, when the client creates a receiver with a dynamic source
> > (and no
> > >> >> dynamic-node-properties), the router will accept the link and assign
> > a
> > >> >> temporary address as the source.  This is only useful in this use
> > case
> > >> if
> > >> >> the broker has a way of knowing that the temporary address is
> > reachable
> > >> via
> > >> >> the router network.
> > >> >>
> > >> >> There is a way to route dynamic termini to a broker.  If an
> > >> >> x-opt-qd.address property is included in the dynamic-node-properties,
> > >> this
> > >> >> address will be used to route the attach to the broker.  I've never
> > >> tested
> > >> >> this with a dynamic target in a sender.  It might not work.
> > >> >
> > >> >
> > >> > And this really isn't something you'd be expecting a generic client
> > (like
> > >> > the JMS client) to know :-)
> > >> >
> > >> > -- Rob
> > >> >
> > >> >
> > >> >>
> > >> >>
> > >> >> -Ted
> > >> >>
> > >> >>
> > >> >> On 02/01/2017 11:07 AM, Robbie Gemmell wrote:
> > >> >>
> > >> >>> I've had a look at this. It would seem that Dispatch doesn't like
> > what
> > >> >>> the client is doing for createTemporaryQueue, but doesn't fail in a
> > >> >>> very nice way, and the client then doesnt notice that things have
> > gone
> > >> >>> south in a somewhat unexpected way.
> > >> >>>
> > >> >>> The client opens a sending link with 'dynamic' target in order to
> > >> >>> create a dynamic node for use as a TemporaryQueue
> > address/destination
> > >> >>> object, which specific consumers/producers are then created against
> > by
> > >> >>> the application. Dispatch doesn't seem to like that but erroneously
> > >> >>> attaches the link 'successfully', though doesnt set a target address
> > >> >>> as is expected. The client then doesnt notice this happened (its
> > >> >>> checking for the link being refused, which it wasn't), allowing the
> > >> >>> application to proceed as far as creating consumers/procuers using
> > the
> > >> >>> TemporaryQueue object, with creation of the e.g Consumer then
> > failing
> > >> >>> since the attach doesnt contain the needed information and leads to
> > >> >>> Dispatch detaching it with the error (though it again doesnt
> > actually
> > >> >>> indicate its refusing the link during the attach response, as it
> > >> >>> probably should have in this case).
> > >> >>>
> > >> >>> Making the client detect the current failure and having it throw an
> > >> >>> aexception from createTemporaryQueue is simple enough.
> > >> >>>
> > >> >>> Hacking the client to use a dynamic recieving link instead, an
> > address
> > >> >>> was returned by Dispatch in the attach response as expected,
> > however a
> > >> >>> consumer on the resulting TemporaryQueue object using this address
> > >> >>> still didnt get the message I sent to the same place. If I also gave
> > >> >>> some credit on the link backing the TemporaryQeueue object itself
> > then
> > >> >>> that link gets sent the message by Dispatch, though this of no use
> > for
> > >> >>> the JMS client.
> > >> >>>
> > >> >>> Needs some more investigation, and I'll need to discuss with some
> > >> >>> folks more familiar with Dispatch.
> > >> >>>
> > >> >>> Robbie
> > >> >>>
> > >> >>> On 26 January 2017 at 13:39, Adel Boutros <Adelboutros@live.com>
> > >> wrote:
> > >> >>>
> > >> >>>> Hello Robbie,
> > >> >>>>
> > >> >>>>
> > >> >>>> I replaced the "createQueue" with "createTemporaryQueue" for the
> > reply
> > >> >>>> consumer and activated PN_TRACE_FRM on Dispatch Router and JMS
> > Client.
> > >> >>>>
> > >> >>>>
> > >> >>>> PS: As Rabih stated before, we are using the same connection and
> > same
> > >> >>>> session to create the  JMSProducer for the request and the
> > >> JMSConsumer for
> > >> >>>> the reply.
> > >> >>>>
> > >> >>>>
> > >> >>>> Exception
> > >> >>>> -------------------
> > >> >>>> javax.jms.IllegalStateException: The MessageConsumer was closed
> > due
> > >> to
> > >> >>>> an unrecoverable error.
> > >> >>>> at org.apache.qpid.jms.JmsMessageConsumer.checkClosed(JmsMessag
> > >> >>>> eConsumer.java:330)
> > >> >>>> at org.apache.qpid.jms.JmsMessageConsumer.receive(JmsMessageCon
> > >> >>>> sumer.java:196)
> > >> >>>> at murex.messaging.client.JmsTest.main(JmsTest.java:57)
> > >> >>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> > >> >>>> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAcce
> > >> >>>> ssorImpl.java:62)
> > >> >>>> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMe
> > >> >>>> thodAccessorImpl.java:43)
> > >> >>>> at java.lang.reflect.Method.invoke(Method.java:498)
> > >> >>>> at com.intellij.rt.execution.application.AppMain.main(
> > >> AppMain.java:147)
> > >> >>>> Caused by: javax.jms.JMSException: No route to the destination node
> > >> >>>> [condition = qd:no-route-to-dest]
> > >> >>>> at org.apache.qpid.jms.provider.amqp.AmqpSupport.convertToExcep
> > >> >>>> tion(AmqpSupport.java:150)
> > >> >>>> at org.apache.qpid.jms.provider.amqp.AmqpSupport.convertToExcep
> > >> >>>> tion(AmqpSupport.java:105)
> > >> >>>> at org.apache.qpid.jms.provider.amqp.AmqpAbstractResource.remot
> > >> >>>> elyClosed(AmqpAbstractResource.java:147)
> > >> >>>> at org.apache.qpid.jms.provider.amqp.AmqpAbstractResource.proce
> > >> >>>> ssRemoteClose(AmqpAbstractResource.java:251)
> > >> >>>> at org.apache.qpid.jms.provider.amqp.AmqpProvider.processUpdate
> > >> >>>> s(AmqpProvider.java:795)
> > >> >>>> at org.apache.qpid.jms.provider.amqp.AmqpProvider.access$1900(A
> > >> >>>> mqpProvider.java:90)
> > >> >>>> at org.apache.qpid.jms.provider.amqp.AmqpProvider$17.run(AmqpPr
> > >> >>>> ovider.java:699)
> > >> >>>> at java.util.concurrent.Executors$RunnableAdapter.call(
> > >> >>>> Executors.java:511)
> > >> >>>> at java.util.concurrent.FutureTask.run(FutureTask.java:266)
> > >> >>>> at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFu
> > >> >>>> tureTask.access$201(ScheduledThreadPoolExecutor.java:180)
> > >> >>>> at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFu
> > >> >>>> tureTask.run(ScheduledThreadPoolExecutor.java:293)
> > >> >>>> at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPool
> > >> >>>> Executor.java:1142)
> > >> >>>> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoo
> > >> >>>> lExecutor.java:617)
> > >> >>>> at java.lang.Thread.run(Thread.java:745)
> > >> >>>>
> > >> >>>>
> > >> >>>> -------------------
> > >> >>>> Dispatch Router (PN_TRACE_FRM=1)
> > >> >>>> -------------------
> > >> >>>>
> > >> >>>> [832220]:  <- SASL
> > >> >>>> [832220]:  -> SASL
> > >> >>>> [832220]:0 -> @sasl-mechanisms(64) [sasl-server-mechanisms=@PN_SY
> > >> >>>> MBOL[:ANONYMOUS]]
> > >> >>>> [832220]:0 <- @sasl-init(65) [mechanism=:ANONYMOUS,
> > >> >>>> initial-response=b"", hostname="host-name"]
> > >> >>>> [832220]:0 -> @sasl-outcome(68) [code=0]
> > >> >>>> [832220]:  <- AMQP
> > >> >>>> [832220]:0 <- @open(16) [container-id="ID:9d96ddb8-
> > >> a334-44c3-954a-2dd910161411:1",
> > >> >>>> hostname="host-name", max-frame-size=1048576, channel-max=32767,
> > >> >>>> idle-time-out=30000, desired-capabilities=@PN_SYMBO
> > >> >>>> L[:"sole-connection-for-container"],
> > properties={:product="QpidJMS",
> > >> >>>> :version="0.11.1", :platform="JVM: 1.8.0_111, 25.111-b14, Oracle
> > >> >>>> Corporation, OS: Windows 7, 6.1, amd64"}]
> > >> >>>> [832220]:  -> AMQP
> > >> >>>> [832220]:0 -> @open(16) [container-id="router.10200",
> > >> >>>> max-frame-size=16384, channel-max=32767, idle-time-out=8000,
> > >> >>>> offered-capabilities=:"ANONYMOUS-RELAY",
> > properties={:product="qpid-
> > >> dispatch-router",
> > >> >>>> :version="0.7.0"}]
> > >> >>>> [832220]:0 <- @begin(17) [next-outgoing-id=1, incoming-window=2047,
> > >> >>>> outgoing-window=2147483647, handle-max=65535]
> > >> >>>> [832220]:0 -> @begin(17) [remote-channel=0, next-outgoing-id=0,
> > >> >>>> incoming-window=61, outgoing-window=2147483647]
> > >> >>>> [832220]:1 <- @begin(17) [next-outgoing-id=1, incoming-window=2047,
> > >> >>>> outgoing-window=2147483647, handle-max=65535]
> > >> >>>> [832220]:1 -> @begin(17) [remote-channel=1, next-outgoing-id=0,
> > >> >>>> incoming-window=61, outgoing-window=2147483647]
> > >> >>>> [832220]:1 <- @attach(18) [name="qpid-jms:sender:ID:8ec7
> > >> >>>> 55cd-dc3f-47cc-9f39-f5d15647fe80:1:1:1:$management", handle=0,
> > >> >>>> role=false, snd-settle-mode=0, rcv-settle-mode=0,
> > source=@source(40)
> > >> >>>> [address="ID:8ec755cd-dc3f-47cc-9f39-f5d15647fe80:1:1:1",
> > durable=0,
> > >> >>>> expiry-policy=:"session-end", timeout=0, dynamic=false,
> > >> >>>> outcomes=@PN_SYMBOL[:"amqp:accepted:list",
> > :"amqp:rejected:list"]],
> > >> >>>> target=@target(41) [address="$management", durable=0,
> > >> >>>> expiry-policy=:"session-end", timeout=0, dynamic=false,
> > >> >>>> capabilities=@PN_SYMBOL[:queue]], incomplete-unsettled=false,
> > >> >>>> initial-delivery-count=0]
> > >> >>>> [832220]:1 -> @attach(18) [name="qpid-jms:sender:ID:8ec7
> > >> >>>> 55cd-dc3f-47cc-9f39-f5d15647fe80:1:1:1:$management", handle=0,
> > >> >>>> role=true, snd-settle-mode=2, rcv-settle-mode=0, source=@source(40)
> > >> >>>> [address="ID:8ec755cd-dc3f-47cc-9f39-f5d15647fe80:1:1:1",
> > durable=0,
> > >> >>>> timeout=0, dynamic=false, outcomes=@PN_SYMBOL[:"amqp:acc
> > epted:list",
> > >> >>>> :"amqp:rejected:list"]], target=@target(41) [address="$management",
> > >> >>>> durable=0, timeout=0, dynamic=false, capabilities=@PN_SYMBOL[:
> > >> queue]],
> > >> >>>> initial-delivery-count=0, max-message-size=0]
> > >> >>>> [832220]:1 -> @flow(19) [next-incoming-id=1, incoming-window=61,
> > >> >>>> next-outgoing-id=0, outgoing-window=2147483647, handle=0,
> > >> delivery-count=0,
> > >> >>>> link-credit=250, drain=false]
> > >> >>>> [832220]:0 <- @attach(18) [name="qpid-jms:temp-queue-cre
> > >> >>>> ator:ID:8ec755cd-dc3f-47cc-9f39-f5d15647fe80:1:1", handle=0,
> > >> >>>> role=false, snd-settle-mode=0, rcv-settle-mode=0,
> > source=@source(40)
> > >> [],
> > >> >>>> target=@target(41) [durable=0, expiry-policy=:"link-detach",
> > >> timeout=0,
> > >> >>>> dynamic=true, dynamic-node-properties={:"lif
> > >> >>>> etime-policy"=@delete-on-close(43) []}, capabilities=@PN_SYMBOL[:"
> > >> temporary-queue"]],
> > >> >>>> incomplete-unsettled=false, initial-delivery-count=0]
> > >> >>>> [832220]:0 -> @attach(18) [name="qpid-jms:temp-queue-cre
> > >> >>>> ator:ID:8ec755cd-dc3f-47cc-9f39-f5d15647fe80:1:1", handle=0,
> > >> role=true,
> > >> >>>> snd-settle-mode=2, rcv-settle-mode=0, source=@source(40)
> > [durable=0,
> > >> >>>> timeout=0, dynamic=false], target=@target(41) [durable=0,
> > >> >>>> expiry-policy=:"link-detach", timeout=0, dynamic=true,
> > >> >>>> dynamic-node-properties={:"lifetime-policy"=@delete-on-close(43)
> > []},
> > >> >>>> capabilities=@PN_SYMBOL[:"temporary-queue"]],
> > >> initial-delivery-count=0,
> > >> >>>> max-message-size=0]
> > >> >>>> [832220]:0 -> @flow(19) [next-incoming-id=1, incoming-window=61,
> > >> >>>> next-outgoing-id=0, outgoing-window=2147483647, handle=0,
> > >> delivery-count=0,
> > >> >>>> link-credit=250, drain=false]
> > >> >>>> [832220]:1 <- @attach(18) [name="qpid-jms:receiver:ID:8e
> > >> >>>> c755cd-dc3f-47cc-9f39-f5d15647fe80:1:1:1:null", handle=1,
> > role=true,
> > >> >>>> snd-settle-mode=0, rcv-settle-mode=0, source=@source(40)
> > [durable=0,
> > >> >>>> expiry-policy=:"link-detach", timeout=0, dynamic=false,
> > >> >>>> default-outcome=@modified(39) [delivery-failed=true],
> > >> >>>> outcomes=@PN_SYMBOL[:"amqp:accepted:list", :"amqp:rejected:list",
> > >> >>>> :"amqp:released:list", :"amqp:modified:list"],
> > >> >>>> capabilities=@PN_SYMBOL[:"temporary-queue"]], target=@target(41)
> > []]
> > >> >>>> [832220]:1 -> @attach(18) [name="qpid-jms:receiver:ID:8e
> > >> >>>> c755cd-dc3f-47cc-9f39-f5d15647fe80:1:1:1:null", handle=1,
> > role=false,
> > >> >>>> snd-settle-mode=2, rcv-settle-mode=0, source=@source(40)
> > [durable=0,
> > >> >>>> timeout=0, dynamic=false], target=@target(41) [durable=0,
> > timeout=0,
> > >> >>>> dynamic=false], initial-delivery-count=0, max-message-size=0]
> > >> >>>> [832220]:1 -> @detach(22) [handle=1, closed=true, error=@error(29)
> > >> >>>> [condition=:"qd:no-route-to-dest", description="No route to the
> > >> >>>> destination node"]]
> > >> >>>> [832220]:1 <- @detach(22) [handle=1, closed=true]
> > >> >>>> [832220]:1 <- @transfer(20) [handle=0, delivery-id=0,
> > >> delivery-tag=b"0",
> > >> >>>> message-format=0] (312) "\x00Sp\xc0\x02\x01A\x00Sr\xc1
> > >> >>>> )\x04\xa3\x0ex-opt-jms-destQ\x00\xa3\x12x-opt-jms-msg-
> > >> >>>> typeQ\x01\x00Ss\xc0O\x0a\xa1/ID:8ec755cd-dc3f-47cc-9f39-
> > >> >>>> f5d15647fe80:1:1:1-1@\xa1\x0b$management@@@@@@\x83\x00\x00\
> > >> >>>> x01Y\xda\xf2\xa6'\x00St\xc1U\x06\xa1\x04name\xa1\x0frabih.
> > >> >>>> connector\xa1\x04type\xa1"org.apache.qpid.dispatch.
> > >> >>>> connector\xa1\x09operation\xa1\x06CREATE\x00Sw\xc1P\x08\
> > >> >>>> xa1\x04role\xa1\x0froute-container\xa1\x04port\xa1\
> > >> >>>> x04port\xa1\x04name\xa1\x0frabih.connector\xa1\
> > >> >>>> x04addr\xa1\x0dbrokerMachine"
> > >> >>>> [832220]:1 -> @flow(19) [next-incoming-id=2, incoming-window=61,
> > >> >>>> next-outgoing-id=0, outgoing-window=2147483647, handle=0,
> > >> delivery-count=1,
> > >> >>>> link-credit=250, drain=false]
> > >> >>>> [832220]:1 -> @disposition(21) [role=true, first=0, last=0,
> > >> >>>> settled=true, state=@accepted(36) []]
> > >> >>>> [832220]:0 <- @close(24) []
> > >> >>>> [832220]:  <- EOS
> > >> >>>> [832220]:0 -> @close(24) []
> > >> >>>> [832220]:  -> EOS
> > >> >>>> Closed x.x.x.x:8961
> > >> >>>> Unexpected poll events: 0020 on x.x.x.x:8961
> > >> >>>> Unexpected poll events: 0020 on x.x.x.x:8961
> > >> >>>>
> > >> >>>> ------------------
> > >> >>>> JMS Client (PN_TRACE_FRM=1)
> > >> >>>> ------------------
> > >> >>>> [1244186219:0] -> Open{ containerId='ID:da8ce84a-c69b-
> > >> 4a22-9b22-69d27a017a83:1',
> > >> >>>> hostname='host-name', maxFrameSize=1048576, channelMax=32767,
> > >> >>>> idleTimeOut=30000, outgoingLocales=null, incomingLocales=null,
> > >> >>>> offeredCapabilities=null, desiredCapabilities=[sole-
> > >> connection-for-container],
> > >> >>>> properties={product=QpidJMS, version=0.11.1, platform=JVM:
> > 1.8.0_111,
> > >> >>>> 25.111-b14, Oracle Corporation, OS: Windows 7, 6.1, amd64}}
> > >> >>>> [1244186219:0] <- Open{ containerId='router.10200',
> > hostname='null',
> > >> >>>> maxFrameSize=16384, channelMax=32767, idleTimeOut=8000,
> > >> >>>> outgoingLocales=null, incomingLocales=null, offeredCapabilities=[
> > >> ANONYMOUS-RELAY],
> > >> >>>> desiredCapabilities=null, properties={product=qpid-dispa
> > tch-router,
> > >> >>>> version=0.7.0}}
> > >> >>>> [1244186219:0] -> Begin{remoteChannel=null, nextOutgoingId=1,
> > >> >>>> incomingWindow=2047, outgoingWindow=2147483647, handleMax=65535,
> > >> >>>> offeredCapabilities=null, desiredCapabilities=null,
> > properties=null}
> > >> >>>> [1244186219:0] <- Begin{remoteChannel=0, nextOutgoingId=0,
> > >> >>>> incomingWindow=61, outgoingWindow=2147483647, handleMax=4294967295,
> > >> >>>> offeredCapabilities=null, desiredCapabilities=null,
> > properties=null}
> > >> >>>> [1244186219:1] -> Begin{remoteChannel=null, nextOutgoingId=1,
> > >> >>>> incomingWindow=2047, outgoingWindow=2147483647, handleMax=65535,
> > >> >>>> offeredCapabilities=null, desiredCapabilities=null,
> > properties=null}
> > >> >>>> [1244186219:1] <- Begin{remoteChannel=1, nextOutgoingId=0,
> > >> >>>> incomingWindow=61, outgoingWindow=2147483647, handleMax=4294967295,
> > >> >>>> offeredCapabilities=null, desiredCapabilities=null,
> > properties=null}
> > >> >>>> [1244186219:1] -> Attach{name='qpid-jms:sender:I
> > >> >>>> D:53f2be62-ad72-4193-a824-3293ffc57168:1:1:1:$management',
> > handle=0,
> > >> >>>> role=SENDER, sndSettleMode=UNSETTLED, rcvSettleMode=FIRST,
> > >> >>>> source=Source{address='ID:53f2be62-ad72-4193-a824-
> > >> 3293ffc57168:1:1:1',
> > >> >>>> durable=NONE, expiryPolicy=SESSION_END, timeout=0, dynamic=false,
> > >> >>>> dynamicNodeProperties=null, distributionMode=null, filter=null,
> > >> >>>> defaultOutcome=null, outcomes=[amqp:accepted:list,
> > >> amqp:rejected:list],
> > >> >>>> capabilities=null}, target=Target{address='$management',
> > >> durable=NONE,
> > >> >>>> expiryPolicy=SESSION_END, timeout=0, dynamic=false,
> > >> >>>> dynamicNodeProperties=null, capabilities=[queue]}, unsettled=null,
> > >> >>>> incompleteUnsettled=false, initialDeliveryCount=0,
> > >> maxMessageSize=null,
> > >> >>>> offeredCapabilities=null, desiredCapabilities=null,
> > properties=null}
> > >> >>>> [1244186219:1] <- Attach{name='qpid-jms:sender:I
> > >> >>>> D:53f2be62-ad72-4193-a824-3293ffc57168:1:1:1:$management',
> > handle=0,
> > >> >>>> role=RECEIVER, sndSettleMode=MIXED, rcvSettleMode=FIRST,
> > >> >>>> source=Source{address='ID:53f2be62-ad72-4193-a824-
> > >> 3293ffc57168:1:1:1',
> > >> >>>> durable=NONE, expiryPolicy=SESSION_END, timeout=0, dynamic=false,
> > >> >>>> dynamicNodeProperties=null, distributionMode=null, filter=null,
> > >> >>>> defaultOutcome=null, outcomes=[amqp:accepted:list,
> > >> amqp:rejected:list],
> > >> >>>> capabilities=null}, target=Target{address='$management',
> > >> durable=NONE,
> > >> >>>> expiryPolicy=SESSION_END, timeout=0, dynamic=false,
> > >> >>>> dynamicNodeProperties=null, capabilities=[queue]}, unsettled=null,
> > >> >>>> incompleteUnsettled=false, initialDeliveryCount=0,
> > maxMessageSize=0,
> > >> >>>> offeredCapabilities=null, desiredCapabilities=null,
> > properties=null}
> > >> >>>> [1244186219:1] <- Flow{nextIncomingId=1, incomingWindow=61,
> > >> >>>> nextOutgoingId=0, outgoingWindow=2147483647, handle=0,
> > >> deliveryCount=0,
> > >> >>>> linkCredit=250, available=null, drain=false, echo=false,
> > >> properties=null}
> > >> >>>> [1244186219:0] -> Attach{name='qpid-jms:temp-que
> > >> >>>> ue-creator:ID:53f2be62-ad72-4193-a824-3293ffc57168:1:1', handle=0,
> > >> >>>> role=SENDER, sndSettleMode=UNSETTLED, rcvSettleMode=FIRST,
> > >> >>>> source=Source{address='null', durable=NONE,
> > expiryPolicy=SESSION_END,
> > >> >>>> timeout=0, dynamic=false, dynamicNodeProperties=null,
> > >> >>>> distributionMode=null, filter=null, defaultOutcome=null,
> > >> outcomes=null,
> > >> >>>> capabilities=null}, target=Target{address='null', durable=NONE,
> > >> >>>> expiryPolicy=LINK_DETACH, timeout=0, dynamic=true,
> > >> >>>> dynamicNodeProperties={lifetime-policy=DeleteOnClose{}},
> > >> >>>> capabilities=[temporary-queue]}, unsettled=null,
> > >> >>>> incompleteUnsettled=false, initialDeliveryCount=0,
> > >> maxMessageSize=null,
> > >> >>>> offeredCapabilities=null, desiredCapabilities=null,
> > properties=null}
> > >> >>>> [1244186219:0] <- Attach{name='qpid-jms:temp-que
> > >> >>>> ue-creator:ID:53f2be62-ad72-4193-a824-3293ffc57168:1:1', handle=0,
> > >> >>>> role=RECEIVER, sndSettleMode=MIXED, rcvSettleMode=FIRST,
> > >> >>>> source=Source{address='null', durable=NONE,
> > expiryPolicy=SESSION_END,
> > >> >>>> timeout=0, dynamic=false, dynamicNodeProperties=null,
> > >> >>>> distributionMode=null, filter=null, defaultOutcome=null,
> > >> outcomes=null,
> > >> >>>> capabilities=null}, target=Target{address='null', durable=NONE,
> > >> >>>> expiryPolicy=LINK_DETACH, timeout=0, dynamic=true,
> > >> >>>> dynamicNodeProperties={lifetime-policy=DeleteOnClose{}},
> > >> >>>> capabilities=[temporary-queue]}, unsettled=null,
> > >> >>>> incompleteUnsettled=false, initialDeliveryCount=0,
> > maxMessageSize=0,
> > >> >>>> offeredCapabilities=null, desiredCapabilities=null,
> > properties=null}
> > >> >>>> [1244186219:0] <- Flow{nextIncomingId=1, incomingWindow=61,
> > >> >>>> nextOutgoingId=0, outgoingWindow=2147483647, handle=0,
> > >> deliveryCount=0,
> > >> >>>> linkCredit=250, available=null, drain=false, echo=false,
> > >> properties=null}
> > >> >>>> [1244186219:1] -> Attach{name='qpid-jms:receiver
> > >> >>>> :ID:53f2be62-ad72-4193-a824-3293ffc57168:1:1:1:null', handle=1,
> > >> >>>> role=RECEIVER, sndSettleMode=UNSETTLED, rcvSettleMode=FIRST,
> > >> >>>> source=Source{address='null', durable=NONE,
> > expiryPolicy=LINK_DETACH,
> > >> >>>> timeout=0, dynamic=false, dynamicNodeProperties=null,
> > >> >>>> distributionMode=null, filter=null, defaultOutcome=Modified{
> > >> deliveryFailed=true,
> > >> >>>> undeliverableHere=null, messageAnnotations=null},
> > >> >>>> outcomes=[amqp:accepted:list, amqp:rejected:list,
> > amqp:released:list,
> > >> >>>> amqp:modified:list], capabilities=[temporary-queue]},
> > >> >>>> target=Target{address='null', durable=NONE,
> > expiryPolicy=SESSION_END,
> > >> >>>> timeout=0, dynamic=false, dynamicNodeProperties=null,
> > >> capabilities=null},
> > >> >>>> unsettled=null, incompleteUnsettled=false,
> > initialDeliveryCount=null,
> > >> >>>> maxMessageSize=null, offeredCapabilities=null,
> > >> desiredCapabilities=null,
> > >> >>>> properties=null}
> > >> >>>> [1244186219:1] <- Attach{name='qpid-jms:receiver
> > >> >>>> :ID:53f2be62-ad72-4193-a824-3293ffc57168:1:1:1:null', handle=1,
> > >> >>>> role=SENDER, sndSettleMode=MIXED, rcvSettleMode=FIRST,
> > >> >>>> source=Source{address='null', durable=NONE,
> > expiryPolicy=SESSION_END,
> > >> >>>> timeout=0, dynamic=false, dynamicNodeProperties=null,
> > >> >>>> distributionMode=null, filter=null, defaultOutcome=null,
> > >> outcomes=null,
> > >> >>>> capabilities=null}, target=Target{address='null', durable=NONE,
> > >> >>>> expiryPolicy=SESSION_END, timeout=0, dynamic=false,
> > >> >>>> dynamicNodeProperties=null, capabilities=null}, unsettled=null,
> > >> >>>> incompleteUnsettled=false, initialDeliveryCount=0,
> > maxMessageSize=0,
> > >> >>>> offeredCapabilities=null, desiredCapabilities=null,
> > properties=null}
> > >> >>>> [1244186219:1] <- Detach{handle=1, closed=true,
> > >> >>>> error=Error{condition=qd:no-route-to-dest, description='No route
> > to
> > >> the
> > >> >>>> destination node', info=null}}
> > >> >>>> [1244186219:1] -> Detach{handle=1, closed=true, error=null}
> > >> >>>> [1244186219:1] -> Transfer{handle=0, deliveryId=0, deliveryTag=0,
> > >> >>>> messageFormat=0, settled=null, more=false, rcvSettleMode=null,
> > >> state=null,
> > >> >>>> resume=false, aborted=false, batchable=false} (312)
> > >> >>>> "\x00Sp\xc0\x02\x01A\x00Sr\xc1)\x04\xa3\x0ex-opt-jms-destQ\
> > >> >>>> x00\xa3\x12x-opt-jms-msg-typeQ\x01\x00Ss\xc0O\x0a\xa1/
> > >> >>>> ID:53f2be62-ad72-4193-a824-3293ffc57168:1:1:1-1@\xa1\x0b$man
> > agement@
> > >> >>>> @@@@@\x83\x00\x00\x01Y\xda\xf4\xd7p\x00St\xc1U\
> > >> >>>> x06\xa1\x04name\xa1\x0frabih.connector\xa1\x04type\xa1"org.
> > >> >>>> apache.qpid.dispatch.connector\xa1\x09operation\
> > >> >>>> xa1\x06CREATE\x00Sw\xc1P\x08\xa1\x04role\xa1\x0froute-
> > >> >>>> container\xa1\x04port\xa1\x04port\xa1\x04name\xa1\
> > >> >>>> x0frabih.connector\xa1\x04addr\xa1\x0dbrokerMachine"
> > >> >>>> [1244186219:1] <- Flow{nextIncomingId=2, incomingWindow=61,
> > >> >>>> nextOutgoingId=0, outgoingWindow=2147483647, handle=0,
> > >> deliveryCount=1,
> > >> >>>> linkCredit=250, available=null, drain=false, echo=false,
> > >> properties=null}
> > >> >>>> [1244186219:1] <- Disposition{role=RECEIVER, first=0, last=0,
> > >> >>>> settled=true, state=Accepted{}, batchable=false}
> > >> >>>> [1244186219:0] -> Close{error=null}
> > >> >>>> [1244186219:0] <- Close{error=null}
> > >> >>>>
> > >> >>>> Regards,
> > >> >>>>
> > >> >>>> Adel
> > >> >>>>
> > >> >>>> ________________________________
> > >> >>>> From: Robbie Gemmell <robbie.gemmell@gmail.com>
> > >> >>>> Sent: Tuesday, January 24, 2017 7:33:32 PM
> > >> >>>> To: users@qpid.apache.org
> > >> >>>> Subject: Re: [Qpid Dispatch] Manage Dispatch router from Qpid Jms
> > >> >>>>
> > >> >>>> That looks fine at first glance. Its possible there is an issue in
> > >> >>>> there needing looked it. I am travelling this week so may not get
> > to
> > >> >>>> look until afterwards, but will try to give things a look at. If
> > you
> > >> >>>> could give more detail on the exception and maybe a protocol trace
> > >> >>>> that might be useful.
> > >> >>>>
> > >> >>>> Robbie
> > >> >>>>
> > >> >>>> On 24 January 2017 at 13:14, Rabih M <rabih.promail@gmail.com>
> > wrote:
> > >> >>>>
> > >> >>>>> Hello Robbie,
> > >> >>>>>
> > >> >>>>> Thanks for you for your answer.
> > >> >>>>> I will try the solutions you proposed.
> > >> >>>>>
> > >> >>>>> I need just need one clarification. Concerning the Jms, I already
> > >> tried
> > >> >>>>> to
> > >> >>>>> use a temporary queue but it didn't work. May be i am using it
> > wrong.
> > >> >>>>> Here
> > >> >>>>> is what i did:
> > >> >>>>>
> > >> >>>>> ...
> > >> >>>>> Session session = connection.createSession(false,
> > >> >>>>> Session.AUTO_ACKNOWLEDGE);
> > >> >>>>> Queue queue = session.createQueue("$management");
> > >> >>>>> MessageProducer producer = session.createProducer(queue);
> > >> >>>>>
> > >> >>>>> Queue tempDest = session.createTemporaryQueue();
> > >> >>>>> MessageConsumer responseConsumer = session.createConsumer(tempDes
> > t);
> > >> >>>>> connection.start();
> > >> >>>>>
> > >> >>>>> ObjectMessage objectMessage = session.createObjectMessage();
> > >> >>>>> objectMessage.setJMSReplyTo(tempDest);
> > >> >>>>> //fill the rest of the parameters ...
> > >> >>>>> producer.send(objectMessage);
> > >> >>>>> ObjectMessage replyMessage = (ObjectMessage)
> > >> >>>>> responseConsumer.receive(1000);
> > >> >>>>> ...
> > >> >>>>>
> > >> >>>>> I was getting an exception on the .receive() from the dispatch
> > router
> > >> >>>>> saying that the reply-to address is bad...
> > >> >>>>> Should i create the temporary queue and the consumer from a
> > different
> > >> >>>>> session then the producer?
> > >> >>>>>
> > >> >>>>> Best regards,
> > >> >>>>> Rabih
> > >> >>>>>
> > >> >>>>>
> > >> >>>>> On Tue, Jan 24, 2017 at 5:37 PM, Robbie Gemmell <
> > >> >>>>> robbie.gemmell@gmail.com>
> > >> >>>>> wrote:
> > >> >>>>>
> > >> >>>>> The session.createTemporaryQueue(); method is how JMS creates
> > >> >>>>>> temporary destinations for use in reply-to scenarios. The
> > dispatch
> > >> >>>>>> tools will be doing essentially the same thing under the covers
> > for
> > >> >>>>>> theirs.
> > >> >>>>>>
> > >> >>>>>> Both work by creating a 'dynamic' link attachment, with the
> > server
> > >> >>>>>> returning an address for the dynamic attach to the client. One
> > key
> > >> >>>>>> difference is with JMS you create the temporary destination (for
> > >> which
> > >> >>>>>> the client uses a dynamic sender link to create), then separately
> > >> >>>>>> create a receiver using it (and in turn the address associated
> > with
> > >> >>>>>> it), whereas non-JMS client/tools will typically just create a
> > >> single
> > >> >>>>>> dynamic receiver link and use its address for the reply-to.
> > >> >>>>>>
> > >> >>>>>> For proton-j, there aren't any examples for this, but you you
> > >> >>>>>> essentially would change the link opening to not specify an
> > address,
> > >> >>>>>> and instead set the source(for a receiver) or target (for a
> > sender)
> > >> to
> > >> >>>>>> be 'dynamic'. You would then inspect the remoteSource or
> > >> remoteTarget
> > >> >>>>>> once the link had been reemotely attached, and get its
> > >> >>>>>> (server-generated) address, then use this as your reply-to.
> > >> >>>>>>
> > >> >>>>>> Robbie
> > >> >>>>>>
> > >> >>>>>> On 23 January 2017 at 11:00, Rabih M <rabih.promail@gmail.com>
> > >> wrote:
> > >> >>>>>>
> > >> >>>>>>> Hello,
> > >> >>>>>>>
> > >> >>>>>>> When I added to the JMS test the ".setJMSReplyTo()" queue, like
> > you
> > >> >>>>>>> suggested, it worked.
> > >> >>>>>>> But I cheated a little to make it work because I did not find a
> > >> way in
> > >> >>>>>>>
> > >> >>>>>> JMS
> > >> >>>>>>
> > >> >>>>>>> to create a local queue. So I created a queue on the
> > qpid-dispatch
> > >> and
> > >> >>>>>>>
> > >> >>>>>> read
> > >> >>>>>>
> > >> >>>>>>> the result from it. You can check the attached code.
> > >> >>>>>>>
> > >> >>>>>>> Is there any way using qpid-jms to create a local queue on the
> > >> client
> > >> >>>>>>>
> > >> >>>>>> side
> > >> >>>>>>
> > >> >>>>>>> to serve as a reply to address?
> > >> >>>>>>>
> > >> >>>>>>> For the proton-j test, I have the same question as above. I saw
> > >> that
> > >> >>>>>>> it
> > >> >>>>>>>
> > >> >>>>>> can
> > >> >>>>>>
> > >> >>>>>>> be done with the C++ API. Are there any examples for proton-j or
> > >> >>>>>>>
> > >> >>>>>> something
> > >> >>>>>>
> > >> >>>>>>> that can help me?
> > >> >>>>>>>
> > >> >>>>>>> I saw may be in proton we don't need a local queue, may be we
> > can
> > >> get
> > >> >>>>>>> the
> > >> >>>>>>> address of the consumer directly and pass it in reply-to field.
> > Is
> > >> it
> > >> >>>>>>> correct?
> > >> >>>>>>>
> > >> >>>>>>> Thanks,
> > >> >>>>>>> Rabih
> > >> >>>>>>>
> > >> >>>>>>>
> > >> >>>>>>>
> > >> >>>>>>> On Fri, Jan 20, 2017 at 10:18 PM, Rob Godfrey <
> > >> >>>>>>> rob.j.godfrey@gmail.com>
> > >> >>>>>>> wrote:
> > >> >>>>>>>
> > >> >>>>>>>>
> > >> >>>>>>>> On 20 January 2017 at 21:45, Ganesh Murthy <gmurthy@redhat.com
> > >
> > >> >>>>>>>> wrote:
> > >> >>>>>>>>
> > >> >>>>>>>>
> > >> >>>>>>>>>
> > >> >>>>>>>>> ----- Original Message -----
> > >> >>>>>>>>>
> > >> >>>>>>>>>> From: "Robbie Gemmell" <robbie.gemmell@gmail.com>
> > >> >>>>>>>>>> To: users@qpid.apache.org
> > >> >>>>>>>>>> Sent: Friday, January 20, 2017 2:18:45 PM
> > >> >>>>>>>>>> Subject: Re: [Qpid Dispatch] Manage Dispatch router from Qpid
> > >> Jms
> > >> >>>>>>>>>>
> > >> >>>>>>>>>> On 20 January 2017 at 19:06, Gordon Sim <gsim@redhat.com>
> > >> wrote:
> > >> >>>>>>>>>>
> > >> >>>>>>>>>>> On 20/01/17 18:40, Rabih M wrote:
> > >> >>>>>>>>>>>
> > >> >>>>>>>>>>>>
> > >> >>>>>>>>>>>> I inserted the map directly into the ObjectMessage like you
> > >> told
> > >> >>>>>>>>>>>>
> > >> >>>>>>>>>>> me
> > >> >>>>>>
> > >> >>>>>>> Robbie and it worked.
> > >> >>>>>>>>>>>>
> > >> >>>>>>>>>>>> But like the proton-j case, the connector is not being
> > >> created on
> > >> >>>>>>>>>>>> the
> > >> >>>>>>>>>>>> Qpid-dispatch side.
> > >> >>>>>>>>>>>> I attached the amqp communication into this mail.
> > >> >>>>>>>>>>>>
> > >> >>>>>>>>>>>
> > >> >>>>>>>>>>>
> > >> >>>>>>>>>>> The last frame in that file is incomplete (the previous
> > error
> > >> >>>>>>>>>>>
> > >> >>>>>>>>>> regarding the
> > >> >>>>>>>>>
> > >> >>>>>>>>>> map body may or may not be a wireshark issue),but that last
> > >> frame
> > >> >>>>>>>>>>>
> > >> >>>>>>>>>> is
> > >> >>>>>>
> > >> >>>>>>> likely
> > >> >>>>>>>>>
> > >> >>>>>>>>>> the response which would indicate the success or otherwise of
> > >> the
> > >> >>>>>>>>>>>
> > >> >>>>>>>>>> frame. Is
> > >> >>>>>>>>>
> > >> >>>>>>>>>> there anything logged by the router?
> > >> >>>>>>>>>>>
> > >> >>>>>>>>>>> If you can, just running the router with PN_TRACE_FRM=1 is
> > >> simpler
> > >> >>>>>>>>>>> for
> > >> >>>>>>>>>>>
> > >> >>>>>>>>>> this
> > >> >>>>>>>>>
> > >> >>>>>>>>>> sort of thing in my view.
> > >> >>>>>>>>>>>
> > >> >>>>>>>>>>>
> > >> >>>>>>>>>> As Gordon suggests, the proton trace logs might be more
> > helpful.
> > >> >>>>>>>>>> You
> > >> >>>>>>>>>> can also do that with proton-j, and this the JMS client too
> > >> since
> > >> >>>>>>>>>> it
> > >> >>>>>>>>>> uses proton-j.
> > >> >>>>>>>>>>
> > >> >>>>>>>>>> One key difference from the qdmanage case is you are not
> > >> setting a
> > >> >>>>>>>>>> reply-to value or correlation-id to use along with it. I
> > don't
> > >> know
> > >> >>>>>>>>>>
> > >> >>>>>>>>> if
> > >> >>>>>>
> > >> >>>>>>> the router cares about not being able to send a response or not
> > >> >>>>>>>>>> though, but it might.
> > >> >>>>>>>>>>
> > >> >>>>>>>>>
> > >> >>>>>>>>> You could add the following to your dispatch router conf file
> > >> >>>>>>>>> (qdrouterd.conf) and restart the router (This will enable
> > trace
> > >> >>>>>>>>>
> > >> >>>>>>>> logging)
> > >> >>>>>>
> > >> >>>>>>>
> > >> >>>>>>>>> log {
> > >> >>>>>>>>>     module: DEFAULT
> > >> >>>>>>>>>     enable: trace+
> > >> >>>>>>>>>     output: /path/to/log/qdrouterd.log
> > >> >>>>>>>>> }
> > >> >>>>>>>>>
> > >> >>>>>>>>> When you run your management request, you will see proton
> > frame
> > >> >>>>>>>>> trace
> > >> >>>>>>>>> and
> > >> >>>>>>>>> you will see additional logging out of the dispatch Python
> > agent
> > >> -
> > >> >>>>>>>>> something like the following -
> > >> >>>>>>>>>
> > >> >>>>>>>>> Fri Jan 20 15:27:23 2017 AGENT (debug) Agent request
> > >> >>>>>>>>> Message(address=None,
> > >> >>>>>>>>> properties={'operation': 'CREATE', 'type':
> > >> >>>>>>>>> 'org.apache.qpid.dispatch.connector',
> > >> >>>>>>>>> 'name': 'rabih.connector'}, body={'port': '5673', 'role':
> > >> >>>>>>>>> 'route-container', 'addr': 'broker-machine', 'name':
> > >> >>>>>>>>>
> > >> >>>>>>>> 'rabih.connector'},
> > >> >>>>>>
> > >> >>>>>>> reply_to='amqp:/_topo/0/Router.A/temp.i4H_ZOvee1xhGxx',
> > >> >>>>>>>>> correlation_id=1L)
> > >> >>>>>>>>> Fri Jan 20 15:27:23 2017 CONN_MGR (info) Configured Connector:
> > >> >>>>>>>>> broker-machine:5673 proto=any, role=route-container
> > >> >>>>>>>>> Fri Jan 20 15:27:23 2017 AGENT (debug) Add entity:
> > >> >>>>>>>>> ConnectorEntity(addr=broker-machine, allowRedirect=True,
> > cost=1,
> > >> >>>>>>>>> host=127.0.0.1, identity=connector/127.0.0.1:
> > >> 5673:rabih.connector,
> > >> >>>>>>>>> idleTimeoutSeconds=16, maxFrameSize=16384, maxSessions=32768,
> > >> >>>>>>>>> name=rabih.connector, port=5673, role=route-container,
> > >> >>>>>>>>> stripAnnotations=both, type=org.apache.qpid.dispatch.
> > connector,
> > >> >>>>>>>>> verifyHostName=True)
> > >> >>>>>>>>>
> > >> >>>>>>>>> The Python management agent will not process your request if
> > >> there
> > >> >>>>>>>>> is
> > >> >>>>>>>>>
> > >> >>>>>>>> no
> > >> >>>>>>
> > >> >>>>>>> reply_to as seen here -
> > >> >>>>>>>>>
> > >> >>>>>>>>> https://github.com/apache/qpid-dispatch/blob/master/
> > >> >>>>>>>>> python/qpid_dispatch_internal/management/agent.py#L822
> > >> >>>>>>>>>
> > >> >>>>>>>>>
> > >> >>>>>>>>>
> > >> >>>>>>>>> Can I ask why the agent doesn't process the request?  Just
> > >> because
> > >> >>>>>>>> there
> > >> >>>>>>>> is
> > >> >>>>>>>> a reply-to doesn't mean that the sender will be around to
> > actually
> > >> >>>>>>>> hear
> > >> >>>>>>>> the
> > >> >>>>>>>> reply, so it seems a bit arbitrary to say that because we
> > *know*
> > >> the
> > >> >>>>>>>> sender
> > >> >>>>>>>> won't learn of the outcome that we won't do anything... The
> > spec
> > >> >>>>>>>> draft
> > >> >>>>>>>> doesn't currently say anything about this (obviously it should
> > >> do),
> > >> >>>>>>>> but
> > >> >>>>>>>>
> > >> >>>>>>> my
> > >> >>>>>>
> > >> >>>>>>> expectation would certainly be that a request would be processed
> > >> even
> > >> >>>>>>>> if
> > >> >>>>>>>> the replyTo address was not present (or ended up not routing
> > >> >>>>>>>> anywhere).
> > >> >>>>>>>> This is also how the Qpid Broker for Java implements this case.
> > >> >>>>>>>>
> > >> >>>>>>>> -- Rob
> > >> >>>>>>>>
> > >> >>>>>>>>
> > >> >>>>>>>> Thanks.
> > >> >>>>>>>>>
> > >> >>>>>>>>>
> > >> >>>>>>>>>> Robbie
> > >> >>>>>>>>>>
> > >> >>>>>>>>>> ------------------------------------------------------------
> > >> >>>>>>>>>>
> > >> >>>>>>>>> ---------
> > >> >>>>>>
> > >> >>>>>>> To unsubscribe, e-mail: users-unsubscribe@qpid.apache.org
> > >> >>>>>>>>>> For additional commands, e-mail: users-help@qpid.apache.org
> > >> >>>>>>>>>>
> > >> >>>>>>>>>>
> > >> >>>>>>>>>>
> > >> >>>>>>>>> ------------------------------------------------------------
> > >> >>>>>>>>> ---------
> > >> >>>>>>>>> To unsubscribe, e-mail: users-unsubscribe@qpid.apache.org
> > >> >>>>>>>>> For additional commands, e-mail: users-help@qpid.apache.org
> > >> >>>>>>>>>
> > >> >>>>>>>>>
> > >> >>>>>>>>>
> > >> >>>>>>>
> > >> >>>>>>>
> > >> >>>>>>>
> > >> >>>>>>> ------------------------------------------------------------
> > >> ---------
> > >> >>>>>>> To unsubscribe, e-mail: users-unsubscribe@qpid.apache.org
> > >> >>>>>>> For additional commands, e-mail: users-help@qpid.apache.org
> > >> >>>>>>>
> > >> >>>>>>
> > >> >>>>>> ------------------------------------------------------------
> > >> ---------
> > >> >>>>>> To unsubscribe, e-mail: users-unsubscribe@qpid.apache.org
> > >> >>>>>> For additional commands, e-mail: users-help@qpid.apache.org
> > >> >>>>>>
> > >> >>>>>>
> > >> >>>>>>
> > >> >>>> ------------------------------------------------------------
> > ---------
> > >> >>>> To unsubscribe, e-mail: users-unsubscribe@qpid.apache.org
> > >> >>>> For additional commands, e-mail: users-help@qpid.apache.org
> > >> >>>>
> > >> >>>>
> > >> >>> ------------------------------------------------------------
> > ---------
> > >> >>> To unsubscribe, e-mail: users-unsubscribe@qpid.apache.org
> > >> >>> For additional commands, e-mail: users-help@qpid.apache.org
> > >> >>>
> > >> >>>
> > >> >> ------------------------------------------------------------
> > ---------
> > >> >> To unsubscribe, e-mail: users-unsubscribe@qpid.apache.org
> > >> >> For additional commands, e-mail: users-help@qpid.apache.org
> > >> >>
> > >> >>
> > >>
> > >> ---------------------------------------------------------------------
> > >> To unsubscribe, e-mail: users-unsubscribe@qpid.apache.org
> > >> For additional commands, e-mail: users-help@qpid.apache.org
> > >>
> > >>
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: users-unsubscribe@qpid.apache.org
> > For additional commands, e-mail: users-help@qpid.apache.org
> >
> >
> 

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


Mime
View raw message