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(JmsMessageConsumer.java:330)
> at org.apache.qpid.jms.JmsMessageConsumer.receive(JmsMessageConsumer.java:196)
> at murex.messaging.client.JmsTest.main(JmsTest.java:57)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.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.convertToException(AmqpSupport.java:150)
> at 
> org.apache.qpid.jms.provider.amqp.AmqpSupport.convertToException(AmqpSupport.java:105)
> at 
> org.apache.qpid.jms.provider.amqp.AmqpAbstractResource.remotelyClosed(AmqpAbstractResource.java:147)
> at 
> org.apache.qpid.jms.provider.amqp.AmqpAbstractResource.processRemoteClose(AmqpAbstractResource.java:251)
> at 
> org.apache.qpid.jms.provider.amqp.AmqpProvider.processUpdates(AmqpProvider.java:795)
> at 
> org.apache.qpid.jms.provider.amqp.AmqpProvider.access$1900(AmqpProvider.java:90)
> at 
> org.apache.qpid.jms.provider.amqp.AmqpProvider$17.run(AmqpProvider.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$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
> at 
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
> at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
> at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.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_SYMBOL[: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_SYMBOL[:"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:8ec755cd-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:8ec755cd-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-creator: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={:"lifetime-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-creator: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:8ec755cd-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:8ec755cd-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:ID: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:ID: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-queue-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-queue-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

Reply via email to