Hello,
As advised, I tried tracing the connection between the router and the
broker. I worte this simple code that sends and receive a message:
Connection connection = null;
try {
ConnectionFactory connectionFactory = new
JmsConnectionFactory("amqp://localhost:10501");
connection = connectionFactory.createConnection();
Session session = connection.createSession(false,
Session.CLIENT_ACKNOWLEDGE);
Queue destination = session.createQueue("queue");
MessageProducer producer = session.createProducer(destination);
connection.start();
TextMessage message = session.createTextMessage("Hello Adoul!");
producer.send(message);
MessageConsumer consumer = session.createConsumer(destination);
TextMessage received = (TextMessage) consumer.receive();
consumer.close();
} catch (JMSException e) {
e.printStackTrace();
} finally {
if (connection != null)
connection.close();
}
All the messages are directly acquired by the dispatch router and when
I close the connection, it resends them to the broker.
Also, any new message sent direclty to the broker (not through the
dispatch router) will be directly acquired by the dispatch router.
Please find below the trace output,
Regards,
Anouchka
Accepted from localhost:58368
[0x7fd3c802d5b0]: <- SASL
[0x7fd3c802d5b0]: -> SASL
[0x7fd3c802d5b0]:0 -> @sasl-mechanisms(64)
[sasl-server-mechanisms=@PN_SYMBOL[:ANONYMOUS]]
[0x7fd3c802d5b0]:0 <- @sasl-init(65) [mechanism=:ANONYMOUS,
initial-response=b"", hostname="localhost"]
[0x7fd3c802d5b0]:0 -> @sasl-outcome(68) [code=0]
[0x7fd3c802d5b0]: <- AMQP
[0x7fd3c802d5b0]:0 <- @open(16)
[container-id="ID:a4e877d7-92e6-44e2-b2be-563ee0c63295:1",
hostname="localhost", 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.7.0_79, 24.79-b02, Oracle Corporation, OS: Windows 7, 6.1, amd64"}]
[0x7fd3c802d5b0]: -> AMQP
[0x7fd3c802d5b0]:0 -> @open(16) [container-id="router.10501",
max-frame-size=16384, channel-max=32767, idle-time-out=8000,
offered-capabilities=:"ANONYMOUS-RELAY",
properties={:product="qpid-dispatch-router", :version="0.7.0"}]
[0x7fd3c802d5b0]:0 <- @begin(17) [next-outgoing-id=1, incoming-window=2047,
outgoing-window=2147483647, handle-max=65535]
[0x7fd3c802d5b0]:0 -> @begin(17) [remote-channel=0, next-outgoing-id=0,
incoming-window=61, outgoing-window=2147483647]
[0x7fd3c802d5b0]:1 <- @begin(17) [next-outgoing-id=1, incoming-window=2047,
outgoing-window=2147483647, handle-max=65535]
[0x7fd3c802d5b0]:1 -> @begin(17) [remote-channel=1, next-outgoing-id=0,
incoming-window=61, outgoing-window=2147483647]
[0x7fd3c802d5b0]:1 <- @attach(18)
[name="qpid-jms:sender:ID:1e147351-49a8-4f50-a90b-f1b9bf4abd21:1:1:1:adelQueue",
handle=0, role=false, snd-settle-mode=0, rcv-settle-mode=0,
source=@source(40)
[address="ID:1e147351-49a8-4f50-a90b-f1b9bf4abd21: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="adelQueue", durable=0,
expiry-policy=:"session-end", timeout=0, dynamic=false,
capabilities=@PN_SYMBOL[:queue]], incomplete-unsettled=false,
initial-delivery-count=0]
[0x7fd3c802d5b0]:1 -> @attach(18)
[name="qpid-jms:sender:ID:1e147351-49a8-4f50-a90b-f1b9bf4abd21:1:1:1:adelQueue",
handle=0, role=true, snd-settle-mode=2, rcv-settle-mode=0,
source=@source(40)
[address="ID:1e147351-49a8-4f50-a90b-f1b9bf4abd21:1:1:1", durable=0,
timeout=0, dynamic=false, outcomes=@PN_SYMBOL[:"amqp:accepted:list",
:"amqp:rejected:list"]], target=@target(41) [address="adelQueue",
durable=0, timeout=0, dynamic=false, capabilities=@PN_SYMBOL[:queue]],
initial-delivery-count=0, max-message-size=0]
[0x7fd3c802d5b0]: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]
[0x1b80b90]:0 <- (EMPTY FRAME)
[0x1b80b90]:0 <- (EMPTY FRAME)
[0x1b80b90]:0 <- (EMPTY FRAME)
*Here it sends the message*
[0x7fd3c802d5b0]:1 <- @transfer(20) [handle=0, delivery-id=0,
delivery-tag=b"0", message-format=0] (152)
"\x00Sp\xc0\x02\x01A\x00Sr\xc1)\x04\xa3\x12x-opt-jms-msg-typeQ\x05\xa3\x0ex-opt-jms-destQ\x00\x00Ss\xc0M\x0a\xa1/ID:1e147351-49a8-4f50-a90b-f1b9bf4abd21:1:1:1-1@
\xa1\x09adelQueue@@@@@@\x83\x00\x00\x01ZkJ\xc7\x86\x00Sw\xa1\x0cHello
Adoul!"
[0x1b80b90]:1 -> @transfer(20) [handle=0, delivery-id=0,
delivery-tag=b"\x04\x00\x00\x00\x00\x00\x00\x00", message-format=0,
settled=false, more=false] (158)
"\x00Sp\xc0\x02\x01A\x00Sr\xd1\x00\x00\x00,\x00\x00\x00\x04\xa3\x12x-opt-jms-msg-typeQ\x05\xa3\x0ex-opt-jms-destQ\x00\x00Ss\xc0M\x0a\xa1/ID:1e147351-49a8-4f50-a90b-f1b9bf4abd21:1:1:1-1@
\xa1\x09adelQueue@@@@@@\x83\x00\x00\x01ZkJ\xc7\x86\x00Sw\xa1\x0cHello
Adoul!"
[0x1b80b90]:1 <- @disposition(21) [role=true, first=0, last=0,
settled=true, state=@accepted(36) []]
[0x7fd3c802d5b0]: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]
[0x7fd3c802d5b0]:1 -> @disposition(21) [role=true, first=0, last=0,
settled=true, state=@accepted(36) []]
[0x7fd3c802d5b0]:1 <- @attach(18)
[name="qpid-jms:receiver:ID:1e147351-49a8-4f50-a90b-f1b9bf4abd21:1:1:1:adelQueue",
handle=1, role=true, snd-settle-mode=0, rcv-settle-mode=0,
source=@source(40) [address="adelQueue", 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[:queue]], target=@target(41) []]
[0x1b80b90]:0 -> @flow(19) [next-incoming-id=0, incoming-window=15,
next-outgoing-id=0, outgoing-window=2147483647, handle=0, delivery-count=0,
link-credit=250, drain=false]
[0x7fd3c802d5b0]:1 -> @attach(18)
[name="qpid-jms:receiver:ID:1e147351-49a8-4f50-a90b-f1b9bf4abd21:1:1:1:adelQueue",
handle=1, role=false, snd-settle-mode=2, rcv-settle-mode=0,
source=@source(40) [address="adelQueue", durable=0,
expiry-policy=:"link-detach", timeout=0, dynamic=false,
outcomes=@PN_SYMBOL[:"amqp:accepted:list", :"amqp:rejected:list",
:"amqp:released:list", :"amqp:modified:list"],
capabilities=@PN_SYMBOL[:queue]], target=@target(41) [durable=0, timeout=0,
dynamic=false], initial-delivery-count=0, max-message-size=0]
[0x1b80b90]:0 <- @transfer(20) [handle=0, delivery-id=0,
delivery-tag=b"\x00\x00\x00\x00\x00\x00\x00\x00", message-format=0] (163)
"\x00Sp\xc0\x07\x05A@
@@R\x04\x00Sr\xd1\x00\x00\x00,\x00\x00\x00\x04\xa3\x12x-opt-jms-msg-typeQ\x05\xa3\x0ex-opt-jms-destQ\x00\x00Ss\xc0M\x0a\xa1/ID:44cb79a5-ae8e-40b7-a930-1f55ba6b3c6a:1:1:1-1@
\xa1\x09adelQueue@@@@@@\x83\x00\x00\x01ZkFN\x01\x00Sw\xa1\x0cHello Adoul!"
[0x1b80b90]:0 <- @transfer(20) [handle=0, delivery-id=1,
delivery-tag=b"\x00\x00\x00\x00\x00\x00\x00\x01", message-format=0] (163)
"\x00Sp\xc0\x07\x05A@
@@R\x02\x00Sr\xd1\x00\x00\x00,\x00\x00\x00\x04\xa3\x12x-opt-jms-msg-typeQ\x05\xa3\x0ex-opt-jms-destQ\x00\x00Ss\xc0M\x0a\xa1/ID:3d7b3b47-f399-4428-867a-11a18d92f08c:1:1:1-1@
\xa1\x09adelQueue@@@@@@\x83\x00\x00\x01ZkG\x7f\x05\x00Sw\xa1\x0cHello
Adoul!"
[0x1b80b90]:0 <- @transfer(20) [handle=0, delivery-id=2,
delivery-tag=b"\x00\x00\x00\x00\x00\x00\x00\x02", message-format=0] (158)
"\x00Sp\xc0\x02\x01A\x00Sr\xd1\x00\x00\x00,\x00\x00\x00\x04\xa3\x12x-opt-jms-msg-typeQ\x05\xa3\x0ex-opt-jms-destQ\x00\x00Ss\xc0M\x0a\xa1/ID:1e147351-49a8-4f50-a90b-f1b9bf4abd21:1:1:1-1@
\xa1\x09adelQueue@@@@@@\x83\x00\x00\x01ZkJ\xc7\x86\x00Sw\xa1\x0cHello
Adoul!"
[0x1b80b90]:0 <- (EMPTY FRAME)
[0x1b80b90]:0 <- (EMPTY FRAME)
[0x1b80b90]:0 <- (EMPTY FRAME)
*Here it receives it*
[0x7fd3c802d5b0]:1 <- @flow(19) [next-incoming-id=0, incoming-window=2047,
next-outgoing-id=2, outgoing-window=2147483647, handle=1, delivery-count=0,
link-credit=1000]
[0x7fd3c802d5b0]:1 -> @transfer(20) [handle=1, delivery-id=0,
delivery-tag=b"\x05\x00\x00\x00\x00\x00\x00\x00", message-format=0,
settled=false, more=false] (163) "\x00Sp\xc0\x07\x05A@
@@R\x04\x00Sr\xd1\x00\x00\x00,\x00\x00\x00\x04\xa3\x12x-opt-jms-msg-typeQ\x05\xa3\x0ex-opt-jms-destQ\x00\x00Ss\xc0M\x0a\xa1/ID:44cb79a5-ae8e-40b7-a930-1f55ba6b3c6a:1:1:1-1@
\xa1\x09adelQueue@@@@@@\x83\x00\x00\x01ZkFN\x01\x00Sw\xa1\x0cHello Adoul!"
[0x7fd3c802d5b0]:1 -> @transfer(20) [handle=1, delivery-id=1,
delivery-tag=b"\x06\x00\x00\x00\x00\x00\x00\x00", message-format=0,
settled=false, more=false] (163) "\x00Sp\xc0\x07\x05A@
@@R\x02\x00Sr\xd1\x00\x00\x00,\x00\x00\x00\x04\xa3\x12x-opt-jms-msg-typeQ\x05\xa3\x0ex-opt-jms-destQ\x00\x00Ss\xc0M\x0a\xa1/ID:3d7b3b47-f399-4428-867a-11a18d92f08c:1:1:1-1@
\xa1\x09adelQueue@@@@@@\x83\x00\x00\x01ZkG\x7f\x05\x00Sw\xa1\x0cHello
Adoul!"
[0x7fd3c802d5b0]:1 -> @transfer(20) [handle=1, delivery-id=2,
delivery-tag=b"\x07\x00\x00\x00\x00\x00\x00\x00", message-format=0,
settled=false, more=false] (158)
"\x00Sp\xc0\x02\x01A\x00Sr\xd1\x00\x00\x00,\x00\x00\x00\x04\xa3\x12x-opt-jms-msg-typeQ\x05\xa3\x0ex-opt-jms-destQ\x00\x00Ss\xc0M\x0a\xa1/ID:1e147351-49a8-4f50-a90b-f1b9bf4abd21:1:1:1-1@
\xa1\x09adelQueue@@@@@@\x83\x00\x00\x01ZkJ\xc7\x86\x00Sw\xa1\x0cHello
Adoul!"
[0x1b80b90]:0 <- (EMPTY FRAME)
[0x7fd3c802d5b0]:0 <- (EMPTY FRAME)
[0x7fd3c802d5b0]:1 <- @detach(22) [handle=1, closed=true]
[0x7fd3c802d5b0]:1 -> @detach(22) [handle=1, closed=true]
*Then the consumer is closed*
[0x1b80b90]:0 -> @flow(19) [next-incoming-id=3, incoming-window=15,
next-outgoing-id=0, outgoing-window=2147483647, handle=0, delivery-count=3,
link-credit=248, drain=false]
[0x1b80b90]:0 -> @disposition(21) [role=true, first=0, last=0,
settled=true, state=@modified(39) [delivery-failed=true,
undeliverable-here=false]]
[0x1b80b90]:0 -> @disposition(21) [role=true, first=1, last=1,
settled=true, state=@modified(39) [delivery-failed=true,
undeliverable-here=false]]
[0x1b80b90]:0 -> @disposition(21) [role=true, first=2, last=2,
settled=true, state=@modified(39) [delivery-failed=true,
undeliverable-here=false]]
[0x1b80b90]:0 -> @flow(19) [next-incoming-id=3, incoming-window=15,
next-outgoing-id=0, outgoing-window=2147483647, handle=0, delivery-count=3,
link-credit=250, drain=false]
*Then it resends the message back to the broker*
[0x1b80b90]:0 <- @transfer(20) [handle=0, delivery-id=3,
delivery-tag=b"\x00\x00\x00\x00\x00\x00\x00\x03", message-format=0] (163)
"\x00Sp\xc0\x07\x05A@
@@R\x05\x00Sr\xd1\x00\x00\x00,\x00\x00\x00\x04\xa3\x12x-opt-jms-msg-typeQ\x05\xa3\x0ex-opt-jms-destQ\x00\x00Ss\xc0M\x0a\xa1/ID:44cb79a5-ae8e-40b7-a930-1f55ba6b3c6a:1:1:1-1@
\xa1\x09adelQueue@@@@@@\x83\x00\x00\x01ZkFN\x01\x00Sw\xa1\x0cHello Adoul!"
[0x1b80b90]:0 <- @transfer(20) [handle=0, delivery-id=4,
delivery-tag=b"\x00\x00\x00\x00\x00\x00\x00\x04", message-format=0] (163)
"\x00Sp\xc0\x07\x05A@
@@R\x03\x00Sr\xd1\x00\x00\x00,\x00\x00\x00\x04\xa3\x12x-opt-jms-msg-typeQ\x05\xa3\x0ex-opt-jms-destQ\x00\x00Ss\xc0M\x0a\xa1/ID:3d7b3b47-f399-4428-867a-11a18d92f08c:1:1:1-1@
\xa1\x09adelQueue@@@@@@\x83\x00\x00\x01ZkG\x7f\x05\x00Sw\xa1\x0cHello
Adoul!"
[0x1b80b90]:0 <- @transfer(20) [handle=0, delivery-id=5,
delivery-tag=b"\x00\x00\x00\x00\x00\x00\x00\x05", message-format=0] (163)
"\x00Sp\xc0\x07\x05A@
@@R\x01\x00Sr\xd1\x00\x00\x00,\x00\x00\x00\x04\xa3\x12x-opt-jms-msg-typeQ\x05\xa3\x0ex-opt-jms-destQ\x00\x00Ss\xc0M\x0a\xa1/ID:1e147351-49a8-4f50-a90b-f1b9bf4abd21:1:1:1-1@
\xa1\x09adelQueue@@@@@@\x83\x00\x00\x01ZkJ\xc7\x86\x00Sw\xa1\x0cHello
Adoul!"
[0x7fd3c802d5b0]:1 <- @disposition(21) [role=true, first=0, last=0,
settled=true, state=@modified(39) [delivery-failed=true]]
[0x7fd3c802d5b0]:1 <- @disposition(21) [role=true, first=1, last=1,
settled=true, state=@released(38) []]
[0x7fd3c802d5b0]:1 <- @disposition(21) [role=true, first=2, last=2,
settled=true, state=@released(38) []]
[0x7fd3c802d5b0]:0 <- @close(24) []
[0x7fd3c802d5b0]: <- EOS
[0x7fd3c802d5b0]:0 -> @close(24) []
[0x7fd3c802d5b0]: -> EOS
Closed localhost:58368
On Wed, Feb 22, 2017 at 7:23 PM, Ted Ross <[email protected]> wrote:
> Hi Anouchka,
>
> I assume what is happening in the dispatch router case is that the message
> does in fact go back to AVAILABLE state, but since the connection between
> the router and broker is still up (and there is still credit for transfer),
> the message is immediately re-sent to the router where is waits until there
> is another consumer to take the delivery.
>
> Tracing the connection between the broker and router would confirm (or
> negate) this theory.
>
> -Ted
>
>
> On 02/22/2017 05:09 PM, Anouchka El Asmar wrote:
>
>> Hello,
>>
>> I am sending messages to a broker with client acknowledge mode and
>> checking
>> the different states of the messages. I realized that when a consumer
>> receives a message, it sets the message state to ACQUIRED and when you
>> close the consumer without acknowledging it, it releases the message and
>> sets it back to AVAILABLE. Another consumer can receive it afterwards.
>>
>> When I repeat the same scenario with the dispatch router connected to the
>> broker, the message is always in ACQUIRED state.
>>
>> Why don't you have the same behavior in both cases?
>>
>> Qpid Dispatch 0.7
>> Qpid Broker 6.0.4
>>
>> Regards,
>> Anouchka
>>
>>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
>