Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id 3EB51200C23 for ; Wed, 22 Feb 2017 17:12:32 +0100 (CET) Received: by cust-asf.ponee.io (Postfix) id 3D404160B67; Wed, 22 Feb 2017 16:12:32 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 48C72160B49 for ; Wed, 22 Feb 2017 17:12:30 +0100 (CET) Received: (qmail 5870 invoked by uid 500); 22 Feb 2017 16:12:29 -0000 Mailing-List: contact users-help@qpid.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: users@qpid.apache.org Delivered-To: mailing list users@qpid.apache.org Received: (qmail 5858 invoked by uid 99); 22 Feb 2017 16:12:29 -0000 Received: from pnap-us-west-generic-nat.apache.org (HELO spamd1-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 22 Feb 2017 16:12:29 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd1-us-west.apache.org (ASF Mail Server at spamd1-us-west.apache.org) with ESMTP id A6567C0315 for ; Wed, 22 Feb 2017 16:12:28 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd1-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: -4.222 X-Spam-Level: X-Spam-Status: No, score=-4.222 tagged_above=-999 required=6.31 tests=[KAM_ASCII_DIVIDERS=0.8, RCVD_IN_DNSWL_HI=-5, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, RP_MATCHES_RCVD=-0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=disabled Received: from mx1-lw-us.apache.org ([10.40.0.8]) by localhost (spamd1-us-west.apache.org [10.40.0.7]) (amavisd-new, port 10024) with ESMTP id 19Q9-ltoTLjD for ; Wed, 22 Feb 2017 16:12:24 +0000 (UTC) Received: from mx3-phx2.redhat.com (mx3-phx2.redhat.com [209.132.183.24]) by mx1-lw-us.apache.org (ASF Mail Server at mx1-lw-us.apache.org) with ESMTPS id AB65C5FAD4 for ; Wed, 22 Feb 2017 16:12:23 +0000 (UTC) Received: from zmail25.collab.prod.int.phx2.redhat.com (zmail25.collab.prod.int.phx2.redhat.com [10.5.83.31]) by mx3-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id v1MGCNvG022170 for ; Wed, 22 Feb 2017 11:12:23 -0500 Date: Wed, 22 Feb 2017 11:12:23 -0500 (EST) From: Ganesh Murthy To: users@qpid.apache.org Message-ID: <1500232689.27709652.1487779943119.JavaMail.zimbra@redhat.com> In-Reply-To: References: Subject: Re: [Qpid Dispatch] Manage Dispatch router from Qpid Jms MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.18.97.215] X-Mailer: Zimbra 8.0.6_GA_5922 (ZimbraWebClient - FF50 (Linux)/8.0.6_GA_5922) Thread-Topic: [Qpid Dispatch] Manage Dispatch router from Qpid Jms Thread-Index: AQHScNtVsOW7snZm5UuqnVH/zaeHOqE+DHEAgAAB5YCAACGWgIAADEoAgAABbwCAA2YZAIAAC0aAgAAEIoCAAASeAIAABzoAgAADVICAABhHAIAACUyAgAReEQCAAZy3AIAAGueAgAAFbwCAAtASPoAJmaYAgAf24ICAAAGdgIAAA7eAgAABwICADc6I7oAAI2qAgAALJICACrhOx4AAScKRjsMUC8s= archived-at: Wed, 22 Feb 2017 16:12:32 -0000 ----- Original Message ----- > From: "Adel Boutros" > 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 resultObject = (Map) > replyMessage.getObject(); > for (Map.Entry entry : resultObject.entrySet()) { > System.out.println(entry.getKey() + ": " + entry.getValue()); > } > > managementConnection.close(); > > Regards, > > Adel > ________________________________ > From: Adel Boutros > 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 > 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 > wrote: > > > On 15 February 2017 at 14:15, Adel Boutros 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 > > > 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 > > > wrote: > > > > > >> On 6 February 2017 at 17:50, Rob Godfrey > > wrote: > > >> > On 6 February 2017 at 18:44, Ted Ross 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 > > >> 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 > > >> >>>> 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 > > 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 > > >> 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 > > > > >> >>>>>>>> wrote: > > >> >>>>>>>> > > >> >>>>>>>> > > >> >>>>>>>>> > > >> >>>>>>>>> ----- Original Message ----- > > >> >>>>>>>>> > > >> >>>>>>>>>> From: "Robbie Gemmell" > > >> >>>>>>>>>> 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 > > >> 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