On 15 February 2017 at 14:15, Adel Boutros <adelbout...@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.

>
> 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.godf...@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.gemm...@gmail.com>
> wrote:
>
>> On 6 February 2017 at 17:50, Rob Godfrey <rob.j.godf...@gmail.com> wrote:
>> > On 6 February 2017 at 18:44, Ted Ross <tr...@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 <adelbout...@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:accepted: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-dispatch-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$management@
>> >>>> @@@@@\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.gemm...@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.prom...@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(tempDest);
>> >>>>> 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.gemm...@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.prom...@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.godf...@gmail.com>
>> >>>>>>> wrote:
>> >>>>>>>
>> >>>>>>>>
>> >>>>>>>> On 20 January 2017 at 21:45, Ganesh Murthy <gmur...@redhat.com>
>> >>>>>>>> wrote:
>> >>>>>>>>
>> >>>>>>>>
>> >>>>>>>>>
>> >>>>>>>>> ----- Original Message -----
>> >>>>>>>>>
>> >>>>>>>>>> From: "Robbie Gemmell" <robbie.gemm...@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 <g...@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-unsubscr...@qpid.apache.org
>> >>>>>>>>>> For additional commands, e-mail: users-h...@qpid.apache.org
>> >>>>>>>>>>
>> >>>>>>>>>>
>> >>>>>>>>>>
>> >>>>>>>>> ------------------------------------------------------------
>> >>>>>>>>> ---------
>> >>>>>>>>> To unsubscribe, e-mail: users-unsubscr...@qpid.apache.org
>> >>>>>>>>> For additional commands, e-mail: users-h...@qpid.apache.org
>> >>>>>>>>>
>> >>>>>>>>>
>> >>>>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> ------------------------------------------------------------
>> ---------
>> >>>>>>> To unsubscribe, e-mail: users-unsubscr...@qpid.apache.org
>> >>>>>>> For additional commands, e-mail: users-h...@qpid.apache.org
>> >>>>>>>
>> >>>>>>
>> >>>>>> ------------------------------------------------------------
>> ---------
>> >>>>>> To unsubscribe, e-mail: users-unsubscr...@qpid.apache.org
>> >>>>>> For additional commands, e-mail: users-h...@qpid.apache.org
>> >>>>>>
>> >>>>>>
>> >>>>>>
>> >>>> ---------------------------------------------------------------------
>> >>>> To unsubscribe, e-mail: users-unsubscr...@qpid.apache.org
>> >>>> For additional commands, e-mail: users-h...@qpid.apache.org
>> >>>>
>> >>>>
>> >>> ---------------------------------------------------------------------
>> >>> To unsubscribe, e-mail: users-unsubscr...@qpid.apache.org
>> >>> For additional commands, e-mail: users-h...@qpid.apache.org
>> >>>
>> >>>
>> >> ---------------------------------------------------------------------
>> >> To unsubscribe, e-mail: users-unsubscr...@qpid.apache.org
>> >> For additional commands, e-mail: users-h...@qpid.apache.org
>> >>
>> >>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscr...@qpid.apache.org
>> For additional commands, e-mail: users-h...@qpid.apache.org
>>
>>


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

Reply via email to