You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@qpid.apache.org by Adel Boutros <ad...@live.com> on 2016/08/16 14:42:42 UTC
[qpdi-dispatch 0.6.0] No delivery settled or accepted when using
proton-c 0.12.2
Hello,
It seems that when a proton::container connects to a broker to send message, 2 callbacks are called after the on_sendable sends a message "on_delivery_accept" and on_delivery_settle".
When my container connects to the dispatch router which is in its turn connected to a broker, I receive none of those. Although I can see my message on the broker. Is this a known bug? Is it fixed with 0.6.1 version of the dispatch router?
I activated the PN_TRACE_FRM=1 on the client-side and noticed that in the case of the dispatch router, I do not receive the following lines:
[000000000080FC10]:0 <- @disposition(21) [role=true, first=0, last=0, settled=true, state=@accepted(36) []]
[000000000080FC10]:0 <- @detach(22) [handle=0, closed=true]
Regards,
Adel
======
Code
======
class MyHandler : public proton::handler
{
void on_start(proton::event &e)
{
std::cout <<"on_start"<<std::endl;
proton::url m_url("MACHINE:10454");
proton::connection conn = e.container().connect(m_url);
conn.open_sender("perf.topic");
}
void on_sendable(proton::event &e)
{
std::cout <<"on_sendable"<<std::endl;
proton::sender sender = e.sender();
proton::message m("Hello toto!");
sender.send(m);
sender.close();
e.connection().close();
}
/// The remote peer accepted an outgoing message.
void on_delivery_accept(proton::event &e)
{
std::cout <<"on_delivery_accept"<<std::endl;
}
/// The remote peer rejected an outgoing message.
void on_delivery_reject(proton::event &e)
{
std::cout <<"on_delivery_reject"<<std::endl;
}
/// The remote peer released an outgoing message.
void on_delivery_release(proton::event &e)
{
std::cout <<"on_delivery_release"<<std::endl;
}
/// The remote peer settled an outgoing message.
void on_delivery_settle(proton::event &e)
{
std::cout <<"on_delivery_settle"<<std::endl;
}
void on_unhandled_error(proton::event &e, const proton::condition &c)
{
std::cout<<e.name()<<":" <<c.str() << std::endl;
}
void on_transport_error(proton::event &e)
{
std::cout<<"on_transport_error: " << e.transport().condition().str() <<std::endl;
}
};
=========
BROKER (PN_TRACE_FRM=1 client-side)
========
on_start
[000000000080FC10]: -> AMQP
[000000000080FC10]:0 -> @open(16) [container-id="092b8863-a51c-445b-846c-896f49238f6c", hostname="MACHINE:10455", channel-max=32767]
[000000000080FC10]:0 -> @begin(17) [next-outgoing-id=0, incoming-window=2147483647, outgoing-window=2147483647]
[000000000080FC10]:0 -> @attach(18) [name="1/1", handle=0, role=false, snd-settle-mode=2, rcv-settle-mode=0, source=@source(40) [durable=0, timeout=0, dynamic=false], target=@targe
t(41) [address="perf.topic", durable=0, timeout=0, dynamic=false], initial-delivery-count=0]
[000000000080FC10]: <- AMQP
[000000000080FC10]:0 <- @open(16) [container-id="5c480e45-a289-4c16-947b-f352419370af", max-frame-size=32768, channel-max=255, idle-time-out=0, properties={:product="qpid", :versio
n="6.0.1", :"qpid.build"="1731621", :"qpid.instance_name"="Broker"}]
[000000000080FC10]:0 <- @begin(17) [remote-channel=0, next-outgoing-id=0, incoming-window=2048, outgoing-window=2048]
[000000000080FC10]:0 <- @attach(18) [name="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) [address="perf.topic", durable=0, timeout=0, dynamic=false]]
[000000000080FC10]:0 <- @flow(19) [next-incoming-id=0, incoming-window=2048, next-outgoing-id=0, outgoing-window=2048, handle=0, delivery-count=0, link-credit=20000, echo=false]
on_sendable
[000000000080FC10]:0 -> @transfer(20) [handle=0, delivery-id=0, delivery-tag=b"\x01\x00\x00\x00\x00\x00\x00\x00", message-format=0, settled=false, more=false] (148) "\x00Sp\xd0\x00
\x00\x00\x0b\x00\x00\x00\x05BP\x04@BR\x00\x00Ss\xd0\x00\x00\x00-\x00\x00\x00\x0d@@@\xa1\x0atest@@@@\x83\x00\x00\x00\x00\x00\x00\x00\x00\x83\x00\x00\x00\x00\x00\x00\x00\x00@R\
x00@\x00St\xd1\x00\x00\x004\x00\x00\x00\x04\xa1\x0ctest\xa1\x02test\xa1\x11test\xa1\x09test\x00Sw\xa1\x0bHello toto!"
[000000000080FC10]:0 -> @detach(22) [handle=0, closed=true]
[000000000080FC10]:0 -> @close(24) []
on_sendable
[000000000080FC10]: -> EOS
[000000000080FC10]:0 <- @disposition(21) [role=true, first=0, last=0, settled=true, state=@accepted(36) []]
[000000000080FC10]:0 <- @detach(22) [handle=0, closed=true]
[000000000080FC10]:0 <- @close(24) []
[000000000080FC10]: <- EOS
on_delivery_accept
on_delivery_settle
=============
DISPATCH ROUTER (PN_TRACE_FRM=1 client-side)
============
on_start
[000000000068FC10]: -> AMQP
[000000000068FC10]:0 -> @open(16) [container-id="915e8a02-4056-4c60-ab27-18068462d862", hostname="MACHINE:10454", channel-max=32767]
[000000000068FC10]:0 -> @begin(17) [next-outgoing-id=0, incoming-window=2147483647, outgoing-window=2147483647]
[000000000068FC10]:0 -> @attach(18) [name="1/1", handle=0, role=false, snd-settle-mode=2, rcv-settle-mode=0, source=@source(40) [durable=0, timeout=0, dynamic=false], target=@targe
t(41) [address="perf.topic", durable=0, timeout=0, dynamic=false], initial-delivery-count=0]
[000000000068FC10]: <- AMQP
[000000000068FC10]:0 <- @open(16) [container-id="router.10454", max-frame-size=16384, channel-max=32767, idle-time-out=8000, offered-capabilities=:"ANONYMOUS-RELAY", properties={:p
roduct="qpid-dispatch-router", :version="0.6.0"}]
[000000000068FC10]:0 <- @begin(17) [remote-channel=0, next-outgoing-id=0, incoming-window=61, outgoing-window=2147483647]
[000000000068FC10]:0 <- @attach(18) [name="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) [address="perf.topic", durable=0, timeout=0, dynamic=false], initial-delivery-count=0]
[000000000068FC10]:0 <- @flow(19) [next-incoming-id=0, incoming-window=61, next-outgoing-id=0, outgoing-window=2147483647, handle=0, delivery-count=0, link-credit=250, drain=false]
on_sendable
[000000000068FC10]:0 -> @transfer(20) [handle=0, delivery-id=0, delivery-tag=b"\x01\x00\x00\x00\x00\x00\x00\x00", message-format=0, settled=false, more=false] (148) "\x00Sp\xd0\x00
\x00\x00\x0b\x00\x00\x00\x05BP\x04@BR\x00\x00Ss\xd0\x00\x00\x00-\x00\x00\x00\x0d@@@\xa1\x0atest@@@@\x83\x00\x00\x00\x00\x00\x00\x00\x00\x83\x00\x00\x00\x00\x00\x00\x00\x00@R\
x00@\x00St\xd1\x00\x00\x004\x00\x00\x00\x04\xa1\x0ctest\xa1\x02test\xa1\x11test\xa1\x09test\x00Sw\xa1\x0bHello toto!"
[000000000068FC10]:0 -> @detach(22) [handle=0, closed=true]
[000000000068FC10]:0 -> @close(24) []
on_sendable
[000000000068FC10]: -> EOS
[000000000068FC10]:0 <- @close(24) []
[000000000068FC10]: <- EOS
RE: [qpdi-dispatch 0.6.0] No delivery settled or accepted when
using proton-c 0.12.2
Posted by Adel Boutros <ad...@live.com>.
Got it. Thank you
> Subject: Re: [qpdi-dispatch 0.6.0] No delivery settled or accepted when using proton-c 0.12.2
> To: users@qpid.apache.org
> From: gsim@redhat.com
> Date: Wed, 17 Aug 2016 09:37:37 +0100
>
> On 17/08/16 08:18, Adel Boutros wrote:
> > One more question:
> > What is the equivalent in proton-c to JMS synchronous sending (MessageProducer.send())?
> > * Is it on_sendable + on_delivery_accept?
> > * Or on_sendable + on_delivery_accept + on_delivery_settle?
>
> In AMQP settled means the delivery is complete. In addition to that flag
> there is an 'outcome' that can be applied to the delivery, usually one
> of accepted, released (or modified), rejected.
>
> Usually[1] the outcome is specified by the receiving peer at the same
> time the delivery is settled. The outcome may not always be accepted though.
>
> You could either handle just on_delivery_settle, and at that point check
> the outcome of the delivery. Or you could handle on_delivery_accept,
> on_delivery_reject etc.
>
> --
> [1] I.e. when the receiver settles first, which is the case for
> at-least-once.
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@qpid.apache.org
> For additional commands, e-mail: users-help@qpid.apache.org
>
Re: [qpdi-dispatch 0.6.0] No delivery settled or accepted when using
proton-c 0.12.2
Posted by Gordon Sim <gs...@redhat.com>.
On 17/08/16 08:18, Adel Boutros wrote:
> One more question:
> What is the equivalent in proton-c to JMS synchronous sending (MessageProducer.send())?
> * Is it on_sendable + on_delivery_accept?
> * Or on_sendable + on_delivery_accept + on_delivery_settle?
In AMQP settled means the delivery is complete. In addition to that flag
there is an 'outcome' that can be applied to the delivery, usually one
of accepted, released (or modified), rejected.
Usually[1] the outcome is specified by the receiving peer at the same
time the delivery is settled. The outcome may not always be accepted though.
You could either handle just on_delivery_settle, and at that point check
the outcome of the delivery. Or you could handle on_delivery_accept,
on_delivery_reject etc.
--
[1] I.e. when the receiver settles first, which is the case for
at-least-once.
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@qpid.apache.org
For additional commands, e-mail: users-help@qpid.apache.org
RE: [qpdi-dispatch 0.6.0] No delivery settled or accepted when
using proton-c 0.12.2
Posted by Adel Boutros <ad...@live.com>.
One more question:
What is the equivalent in proton-c to JMS synchronous sending (MessageProducer.send())?
* Is it on_sendable + on_delivery_accept?
* Or on_sendable + on_delivery_accept + on_delivery_settle?
> From: adelboutros@live.com
> To: users@qpid.apache.org
> Subject: RE: [qpdi-dispatch 0.6.0] No delivery settled or accepted when using proton-c 0.12.2
> Date: Tue, 16 Aug 2016 18:37:54 +0200
>
> You were right. I removed the connection.close() and noticed that after some time, I am receiving the "delivery_settle" and "delivery_accept".
>
> > Subject: Re: [qpdi-dispatch 0.6.0] No delivery settled or accepted when using proton-c 0.12.2
> > To: users@qpid.apache.org
> > From: gsim@redhat.com
> > Date: Tue, 16 Aug 2016 16:16:18 +0100
> >
> > On 16/08/16 15:42, Adel Boutros wrote:
> > > Hello,
> > >
> > > It seems that when a proton::container connects to a broker to send message, 2 callbacks are called after the on_sendable sends a message "on_delivery_accept" and on_delivery_settle".
> > >
> > > When my container connects to the dispatch router which is in its turn connected to a broker, I receive none of those. Although I can see my message on the broker. Is this a known bug? Is it fixed with 0.6.1 version of the dispatch router?
> >
> > Dispositions are normally relayed back to the client. I suspect the
> > issue may be that you are closing the link immediately after sending -
> > that may cause the router to think you are not interested in the
> > disposition. You could try adding a flag to indicate that you have
> > already sent the message, then delaying the closing of sender and
> > connection until the messages are confirmed.
> >
> > > I activated the PN_TRACE_FRM=1 on the client-side and noticed that in the case of the dispatch router, I do not receive the following lines:
> > >
> > > [000000000080FC10]:0 <- @disposition(21) [role=true, first=0, last=0, settled=true, state=@accepted(36) []]
> > > [000000000080FC10]:0 <- @detach(22) [handle=0, closed=true]
> > >
> > > Regards,
> > > Adel
> > >
> > > ======
> > > Code
> > > ======
> > > class MyHandler : public proton::handler
> > > {
> > >
> > > void on_start(proton::event &e)
> > > {
> > > std::cout <<"on_start"<<std::endl;
> > > proton::url m_url("MACHINE:10454");
> > > proton::connection conn = e.container().connect(m_url);
> > > conn.open_sender("perf.topic");
> > > }
> > >
> > > void on_sendable(proton::event &e)
> > > {
> > > std::cout <<"on_sendable"<<std::endl;
> > > proton::sender sender = e.sender();
> > > proton::message m("Hello toto!");
> > > sender.send(m);
> > > sender.close();
> > > e.connection().close();
> > > }
> > >
> > > /// The remote peer accepted an outgoing message.
> > > void on_delivery_accept(proton::event &e)
> > > {
> > > std::cout <<"on_delivery_accept"<<std::endl;
> > > }
> > > /// The remote peer rejected an outgoing message.
> > > void on_delivery_reject(proton::event &e)
> > > {
> > > std::cout <<"on_delivery_reject"<<std::endl;
> > > }
> > > /// The remote peer released an outgoing message.
> > > void on_delivery_release(proton::event &e)
> > > {
> > > std::cout <<"on_delivery_release"<<std::endl;
> > > }
> > > /// The remote peer settled an outgoing message.
> > > void on_delivery_settle(proton::event &e)
> > > {
> > > std::cout <<"on_delivery_settle"<<std::endl;
> > > }
> > >
> > > void on_unhandled_error(proton::event &e, const proton::condition &c)
> > > {
> > > std::cout<<e.name()<<":" <<c.str() << std::endl;
> > > }
> > >
> > > void on_transport_error(proton::event &e)
> > > {
> > > std::cout<<"on_transport_error: " << e.transport().condition().str() <<std::endl;
> > > }
> > > };
> > >
> > > =========
> > > BROKER (PN_TRACE_FRM=1 client-side)
> > > ========
> > > on_start
> > > [000000000080FC10]: -> AMQP
> > > [000000000080FC10]:0 -> @open(16) [container-id="092b8863-a51c-445b-846c-896f49238f6c", hostname="MACHINE:10455", channel-max=32767]
> > > [000000000080FC10]:0 -> @begin(17) [next-outgoing-id=0, incoming-window=2147483647, outgoing-window=2147483647]
> > > [000000000080FC10]:0 -> @attach(18) [name="1/1", handle=0, role=false, snd-settle-mode=2, rcv-settle-mode=0, source=@source(40) [durable=0, timeout=0, dynamic=false], target=@targe
> > > t(41) [address="perf.topic", durable=0, timeout=0, dynamic=false], initial-delivery-count=0]
> > > [000000000080FC10]: <- AMQP
> > > [000000000080FC10]:0 <- @open(16) [container-id="5c480e45-a289-4c16-947b-f352419370af", max-frame-size=32768, channel-max=255, idle-time-out=0, properties={:product="qpid", :versio
> > > n="6.0.1", :"qpid.build"="1731621", :"qpid.instance_name"="Broker"}]
> > > [000000000080FC10]:0 <- @begin(17) [remote-channel=0, next-outgoing-id=0, incoming-window=2048, outgoing-window=2048]
> > > [000000000080FC10]:0 <- @attach(18) [name="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) [address="perf.topic", durable=0, timeout=0, dynamic=false]]
> > > [000000000080FC10]:0 <- @flow(19) [next-incoming-id=0, incoming-window=2048, next-outgoing-id=0, outgoing-window=2048, handle=0, delivery-count=0, link-credit=20000, echo=false]
> > > on_sendable
> > > [000000000080FC10]:0 -> @transfer(20) [handle=0, delivery-id=0, delivery-tag=b"\x01\x00\x00\x00\x00\x00\x00\x00", message-format=0, settled=false, more=false] (148) "\x00Sp\xd0\x00
> > > \x00\x00\x0b\x00\x00\x00\x05BP\x04@BR\x00\x00Ss\xd0\x00\x00\x00-\x00\x00\x00\x0d@@@\xa1\x0atest@@@@\x83\x00\x00\x00\x00\x00\x00\x00\x00\x83\x00\x00\x00\x00\x00\x00\x00\x00@R\
> > > x00@\x00St\xd1\x00\x00\x004\x00\x00\x00\x04\xa1\x0ctest\xa1\x02test\xa1\x11test\xa1\x09test\x00Sw\xa1\x0bHello toto!"
> > > [000000000080FC10]:0 -> @detach(22) [handle=0, closed=true]
> > > [000000000080FC10]:0 -> @close(24) []
> > > on_sendable
> > > [000000000080FC10]: -> EOS
> > > [000000000080FC10]:0 <- @disposition(21) [role=true, first=0, last=0, settled=true, state=@accepted(36) []]
> > > [000000000080FC10]:0 <- @detach(22) [handle=0, closed=true]
> > > [000000000080FC10]:0 <- @close(24) []
> > > [000000000080FC10]: <- EOS
> > > on_delivery_accept
> > > on_delivery_settle
> > >
> > > =============
> > > DISPATCH ROUTER (PN_TRACE_FRM=1 client-side)
> > > ============
> > > on_start
> > > [000000000068FC10]: -> AMQP
> > > [000000000068FC10]:0 -> @open(16) [container-id="915e8a02-4056-4c60-ab27-18068462d862", hostname="MACHINE:10454", channel-max=32767]
> > > [000000000068FC10]:0 -> @begin(17) [next-outgoing-id=0, incoming-window=2147483647, outgoing-window=2147483647]
> > > [000000000068FC10]:0 -> @attach(18) [name="1/1", handle=0, role=false, snd-settle-mode=2, rcv-settle-mode=0, source=@source(40) [durable=0, timeout=0, dynamic=false], target=@targe
> > > t(41) [address="perf.topic", durable=0, timeout=0, dynamic=false], initial-delivery-count=0]
> > > [000000000068FC10]: <- AMQP
> > > [000000000068FC10]:0 <- @open(16) [container-id="router.10454", max-frame-size=16384, channel-max=32767, idle-time-out=8000, offered-capabilities=:"ANONYMOUS-RELAY", properties={:p
> > > roduct="qpid-dispatch-router", :version="0.6.0"}]
> > > [000000000068FC10]:0 <- @begin(17) [remote-channel=0, next-outgoing-id=0, incoming-window=61, outgoing-window=2147483647]
> > > [000000000068FC10]:0 <- @attach(18) [name="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) [address="perf.topic", durable=0, timeout=0, dynamic=false], initial-delivery-count=0]
> > > [000000000068FC10]:0 <- @flow(19) [next-incoming-id=0, incoming-window=61, next-outgoing-id=0, outgoing-window=2147483647, handle=0, delivery-count=0, link-credit=250, drain=false]
> > >
> > > on_sendable
> > > [000000000068FC10]:0 -> @transfer(20) [handle=0, delivery-id=0, delivery-tag=b"\x01\x00\x00\x00\x00\x00\x00\x00", message-format=0, settled=false, more=false] (148) "\x00Sp\xd0\x00
> > > \x00\x00\x0b\x00\x00\x00\x05BP\x04@BR\x00\x00Ss\xd0\x00\x00\x00-\x00\x00\x00\x0d@@@\xa1\x0atest@@@@\x83\x00\x00\x00\x00\x00\x00\x00\x00\x83\x00\x00\x00\x00\x00\x00\x00\x00@R\
> > > x00@\x00St\xd1\x00\x00\x004\x00\x00\x00\x04\xa1\x0ctest\xa1\x02test\xa1\x11test\xa1\x09test\x00Sw\xa1\x0bHello toto!"
> > > [000000000068FC10]:0 -> @detach(22) [handle=0, closed=true]
> > > [000000000068FC10]:0 -> @close(24) []
> > > on_sendable
> > > [000000000068FC10]: -> EOS
> > > [000000000068FC10]:0 <- @close(24) []
> > > [000000000068FC10]: <- EOS
> > >
> > >
> > >
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: users-unsubscribe@qpid.apache.org
> > For additional commands, e-mail: users-help@qpid.apache.org
> >
>
RE: [qpdi-dispatch 0.6.0] No delivery settled or accepted when
using proton-c 0.12.2
Posted by Adel Boutros <ad...@live.com>.
You were right. I removed the connection.close() and noticed that after some time, I am receiving the "delivery_settle" and "delivery_accept".
> Subject: Re: [qpdi-dispatch 0.6.0] No delivery settled or accepted when using proton-c 0.12.2
> To: users@qpid.apache.org
> From: gsim@redhat.com
> Date: Tue, 16 Aug 2016 16:16:18 +0100
>
> On 16/08/16 15:42, Adel Boutros wrote:
> > Hello,
> >
> > It seems that when a proton::container connects to a broker to send message, 2 callbacks are called after the on_sendable sends a message "on_delivery_accept" and on_delivery_settle".
> >
> > When my container connects to the dispatch router which is in its turn connected to a broker, I receive none of those. Although I can see my message on the broker. Is this a known bug? Is it fixed with 0.6.1 version of the dispatch router?
>
> Dispositions are normally relayed back to the client. I suspect the
> issue may be that you are closing the link immediately after sending -
> that may cause the router to think you are not interested in the
> disposition. You could try adding a flag to indicate that you have
> already sent the message, then delaying the closing of sender and
> connection until the messages are confirmed.
>
> > I activated the PN_TRACE_FRM=1 on the client-side and noticed that in the case of the dispatch router, I do not receive the following lines:
> >
> > [000000000080FC10]:0 <- @disposition(21) [role=true, first=0, last=0, settled=true, state=@accepted(36) []]
> > [000000000080FC10]:0 <- @detach(22) [handle=0, closed=true]
> >
> > Regards,
> > Adel
> >
> > ======
> > Code
> > ======
> > class MyHandler : public proton::handler
> > {
> >
> > void on_start(proton::event &e)
> > {
> > std::cout <<"on_start"<<std::endl;
> > proton::url m_url("MACHINE:10454");
> > proton::connection conn = e.container().connect(m_url);
> > conn.open_sender("perf.topic");
> > }
> >
> > void on_sendable(proton::event &e)
> > {
> > std::cout <<"on_sendable"<<std::endl;
> > proton::sender sender = e.sender();
> > proton::message m("Hello toto!");
> > sender.send(m);
> > sender.close();
> > e.connection().close();
> > }
> >
> > /// The remote peer accepted an outgoing message.
> > void on_delivery_accept(proton::event &e)
> > {
> > std::cout <<"on_delivery_accept"<<std::endl;
> > }
> > /// The remote peer rejected an outgoing message.
> > void on_delivery_reject(proton::event &e)
> > {
> > std::cout <<"on_delivery_reject"<<std::endl;
> > }
> > /// The remote peer released an outgoing message.
> > void on_delivery_release(proton::event &e)
> > {
> > std::cout <<"on_delivery_release"<<std::endl;
> > }
> > /// The remote peer settled an outgoing message.
> > void on_delivery_settle(proton::event &e)
> > {
> > std::cout <<"on_delivery_settle"<<std::endl;
> > }
> >
> > void on_unhandled_error(proton::event &e, const proton::condition &c)
> > {
> > std::cout<<e.name()<<":" <<c.str() << std::endl;
> > }
> >
> > void on_transport_error(proton::event &e)
> > {
> > std::cout<<"on_transport_error: " << e.transport().condition().str() <<std::endl;
> > }
> > };
> >
> > =========
> > BROKER (PN_TRACE_FRM=1 client-side)
> > ========
> > on_start
> > [000000000080FC10]: -> AMQP
> > [000000000080FC10]:0 -> @open(16) [container-id="092b8863-a51c-445b-846c-896f49238f6c", hostname="MACHINE:10455", channel-max=32767]
> > [000000000080FC10]:0 -> @begin(17) [next-outgoing-id=0, incoming-window=2147483647, outgoing-window=2147483647]
> > [000000000080FC10]:0 -> @attach(18) [name="1/1", handle=0, role=false, snd-settle-mode=2, rcv-settle-mode=0, source=@source(40) [durable=0, timeout=0, dynamic=false], target=@targe
> > t(41) [address="perf.topic", durable=0, timeout=0, dynamic=false], initial-delivery-count=0]
> > [000000000080FC10]: <- AMQP
> > [000000000080FC10]:0 <- @open(16) [container-id="5c480e45-a289-4c16-947b-f352419370af", max-frame-size=32768, channel-max=255, idle-time-out=0, properties={:product="qpid", :versio
> > n="6.0.1", :"qpid.build"="1731621", :"qpid.instance_name"="Broker"}]
> > [000000000080FC10]:0 <- @begin(17) [remote-channel=0, next-outgoing-id=0, incoming-window=2048, outgoing-window=2048]
> > [000000000080FC10]:0 <- @attach(18) [name="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) [address="perf.topic", durable=0, timeout=0, dynamic=false]]
> > [000000000080FC10]:0 <- @flow(19) [next-incoming-id=0, incoming-window=2048, next-outgoing-id=0, outgoing-window=2048, handle=0, delivery-count=0, link-credit=20000, echo=false]
> > on_sendable
> > [000000000080FC10]:0 -> @transfer(20) [handle=0, delivery-id=0, delivery-tag=b"\x01\x00\x00\x00\x00\x00\x00\x00", message-format=0, settled=false, more=false] (148) "\x00Sp\xd0\x00
> > \x00\x00\x0b\x00\x00\x00\x05BP\x04@BR\x00\x00Ss\xd0\x00\x00\x00-\x00\x00\x00\x0d@@@\xa1\x0atest@@@@\x83\x00\x00\x00\x00\x00\x00\x00\x00\x83\x00\x00\x00\x00\x00\x00\x00\x00@R\
> > x00@\x00St\xd1\x00\x00\x004\x00\x00\x00\x04\xa1\x0ctest\xa1\x02test\xa1\x11test\xa1\x09test\x00Sw\xa1\x0bHello toto!"
> > [000000000080FC10]:0 -> @detach(22) [handle=0, closed=true]
> > [000000000080FC10]:0 -> @close(24) []
> > on_sendable
> > [000000000080FC10]: -> EOS
> > [000000000080FC10]:0 <- @disposition(21) [role=true, first=0, last=0, settled=true, state=@accepted(36) []]
> > [000000000080FC10]:0 <- @detach(22) [handle=0, closed=true]
> > [000000000080FC10]:0 <- @close(24) []
> > [000000000080FC10]: <- EOS
> > on_delivery_accept
> > on_delivery_settle
> >
> > =============
> > DISPATCH ROUTER (PN_TRACE_FRM=1 client-side)
> > ============
> > on_start
> > [000000000068FC10]: -> AMQP
> > [000000000068FC10]:0 -> @open(16) [container-id="915e8a02-4056-4c60-ab27-18068462d862", hostname="MACHINE:10454", channel-max=32767]
> > [000000000068FC10]:0 -> @begin(17) [next-outgoing-id=0, incoming-window=2147483647, outgoing-window=2147483647]
> > [000000000068FC10]:0 -> @attach(18) [name="1/1", handle=0, role=false, snd-settle-mode=2, rcv-settle-mode=0, source=@source(40) [durable=0, timeout=0, dynamic=false], target=@targe
> > t(41) [address="perf.topic", durable=0, timeout=0, dynamic=false], initial-delivery-count=0]
> > [000000000068FC10]: <- AMQP
> > [000000000068FC10]:0 <- @open(16) [container-id="router.10454", max-frame-size=16384, channel-max=32767, idle-time-out=8000, offered-capabilities=:"ANONYMOUS-RELAY", properties={:p
> > roduct="qpid-dispatch-router", :version="0.6.0"}]
> > [000000000068FC10]:0 <- @begin(17) [remote-channel=0, next-outgoing-id=0, incoming-window=61, outgoing-window=2147483647]
> > [000000000068FC10]:0 <- @attach(18) [name="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) [address="perf.topic", durable=0, timeout=0, dynamic=false], initial-delivery-count=0]
> > [000000000068FC10]:0 <- @flow(19) [next-incoming-id=0, incoming-window=61, next-outgoing-id=0, outgoing-window=2147483647, handle=0, delivery-count=0, link-credit=250, drain=false]
> >
> > on_sendable
> > [000000000068FC10]:0 -> @transfer(20) [handle=0, delivery-id=0, delivery-tag=b"\x01\x00\x00\x00\x00\x00\x00\x00", message-format=0, settled=false, more=false] (148) "\x00Sp\xd0\x00
> > \x00\x00\x0b\x00\x00\x00\x05BP\x04@BR\x00\x00Ss\xd0\x00\x00\x00-\x00\x00\x00\x0d@@@\xa1\x0atest@@@@\x83\x00\x00\x00\x00\x00\x00\x00\x00\x83\x00\x00\x00\x00\x00\x00\x00\x00@R\
> > x00@\x00St\xd1\x00\x00\x004\x00\x00\x00\x04\xa1\x0ctest\xa1\x02test\xa1\x11test\xa1\x09test\x00Sw\xa1\x0bHello toto!"
> > [000000000068FC10]:0 -> @detach(22) [handle=0, closed=true]
> > [000000000068FC10]:0 -> @close(24) []
> > on_sendable
> > [000000000068FC10]: -> EOS
> > [000000000068FC10]:0 <- @close(24) []
> > [000000000068FC10]: <- EOS
> >
> >
> >
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@qpid.apache.org
> For additional commands, e-mail: users-help@qpid.apache.org
>
Re: [qpdi-dispatch 0.6.0] No delivery settled or accepted when using
proton-c 0.12.2
Posted by Gordon Sim <gs...@redhat.com>.
On 16/08/16 15:42, Adel Boutros wrote:
> Hello,
>
> It seems that when a proton::container connects to a broker to send message, 2 callbacks are called after the on_sendable sends a message "on_delivery_accept" and on_delivery_settle".
>
> When my container connects to the dispatch router which is in its turn connected to a broker, I receive none of those. Although I can see my message on the broker. Is this a known bug? Is it fixed with 0.6.1 version of the dispatch router?
Dispositions are normally relayed back to the client. I suspect the
issue may be that you are closing the link immediately after sending -
that may cause the router to think you are not interested in the
disposition. You could try adding a flag to indicate that you have
already sent the message, then delaying the closing of sender and
connection until the messages are confirmed.
> I activated the PN_TRACE_FRM=1 on the client-side and noticed that in the case of the dispatch router, I do not receive the following lines:
>
> [000000000080FC10]:0 <- @disposition(21) [role=true, first=0, last=0, settled=true, state=@accepted(36) []]
> [000000000080FC10]:0 <- @detach(22) [handle=0, closed=true]
>
> Regards,
> Adel
>
> ======
> Code
> ======
> class MyHandler : public proton::handler
> {
>
> void on_start(proton::event &e)
> {
> std::cout <<"on_start"<<std::endl;
> proton::url m_url("MACHINE:10454");
> proton::connection conn = e.container().connect(m_url);
> conn.open_sender("perf.topic");
> }
>
> void on_sendable(proton::event &e)
> {
> std::cout <<"on_sendable"<<std::endl;
> proton::sender sender = e.sender();
> proton::message m("Hello toto!");
> sender.send(m);
> sender.close();
> e.connection().close();
> }
>
> /// The remote peer accepted an outgoing message.
> void on_delivery_accept(proton::event &e)
> {
> std::cout <<"on_delivery_accept"<<std::endl;
> }
> /// The remote peer rejected an outgoing message.
> void on_delivery_reject(proton::event &e)
> {
> std::cout <<"on_delivery_reject"<<std::endl;
> }
> /// The remote peer released an outgoing message.
> void on_delivery_release(proton::event &e)
> {
> std::cout <<"on_delivery_release"<<std::endl;
> }
> /// The remote peer settled an outgoing message.
> void on_delivery_settle(proton::event &e)
> {
> std::cout <<"on_delivery_settle"<<std::endl;
> }
>
> void on_unhandled_error(proton::event &e, const proton::condition &c)
> {
> std::cout<<e.name()<<":" <<c.str() << std::endl;
> }
>
> void on_transport_error(proton::event &e)
> {
> std::cout<<"on_transport_error: " << e.transport().condition().str() <<std::endl;
> }
> };
>
> =========
> BROKER (PN_TRACE_FRM=1 client-side)
> ========
> on_start
> [000000000080FC10]: -> AMQP
> [000000000080FC10]:0 -> @open(16) [container-id="092b8863-a51c-445b-846c-896f49238f6c", hostname="MACHINE:10455", channel-max=32767]
> [000000000080FC10]:0 -> @begin(17) [next-outgoing-id=0, incoming-window=2147483647, outgoing-window=2147483647]
> [000000000080FC10]:0 -> @attach(18) [name="1/1", handle=0, role=false, snd-settle-mode=2, rcv-settle-mode=0, source=@source(40) [durable=0, timeout=0, dynamic=false], target=@targe
> t(41) [address="perf.topic", durable=0, timeout=0, dynamic=false], initial-delivery-count=0]
> [000000000080FC10]: <- AMQP
> [000000000080FC10]:0 <- @open(16) [container-id="5c480e45-a289-4c16-947b-f352419370af", max-frame-size=32768, channel-max=255, idle-time-out=0, properties={:product="qpid", :versio
> n="6.0.1", :"qpid.build"="1731621", :"qpid.instance_name"="Broker"}]
> [000000000080FC10]:0 <- @begin(17) [remote-channel=0, next-outgoing-id=0, incoming-window=2048, outgoing-window=2048]
> [000000000080FC10]:0 <- @attach(18) [name="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) [address="perf.topic", durable=0, timeout=0, dynamic=false]]
> [000000000080FC10]:0 <- @flow(19) [next-incoming-id=0, incoming-window=2048, next-outgoing-id=0, outgoing-window=2048, handle=0, delivery-count=0, link-credit=20000, echo=false]
> on_sendable
> [000000000080FC10]:0 -> @transfer(20) [handle=0, delivery-id=0, delivery-tag=b"\x01\x00\x00\x00\x00\x00\x00\x00", message-format=0, settled=false, more=false] (148) "\x00Sp\xd0\x00
> \x00\x00\x0b\x00\x00\x00\x05BP\x04@BR\x00\x00Ss\xd0\x00\x00\x00-\x00\x00\x00\x0d@@@\xa1\x0atest@@@@\x83\x00\x00\x00\x00\x00\x00\x00\x00\x83\x00\x00\x00\x00\x00\x00\x00\x00@R\
> x00@\x00St\xd1\x00\x00\x004\x00\x00\x00\x04\xa1\x0ctest\xa1\x02test\xa1\x11test\xa1\x09test\x00Sw\xa1\x0bHello toto!"
> [000000000080FC10]:0 -> @detach(22) [handle=0, closed=true]
> [000000000080FC10]:0 -> @close(24) []
> on_sendable
> [000000000080FC10]: -> EOS
> [000000000080FC10]:0 <- @disposition(21) [role=true, first=0, last=0, settled=true, state=@accepted(36) []]
> [000000000080FC10]:0 <- @detach(22) [handle=0, closed=true]
> [000000000080FC10]:0 <- @close(24) []
> [000000000080FC10]: <- EOS
> on_delivery_accept
> on_delivery_settle
>
> =============
> DISPATCH ROUTER (PN_TRACE_FRM=1 client-side)
> ============
> on_start
> [000000000068FC10]: -> AMQP
> [000000000068FC10]:0 -> @open(16) [container-id="915e8a02-4056-4c60-ab27-18068462d862", hostname="MACHINE:10454", channel-max=32767]
> [000000000068FC10]:0 -> @begin(17) [next-outgoing-id=0, incoming-window=2147483647, outgoing-window=2147483647]
> [000000000068FC10]:0 -> @attach(18) [name="1/1", handle=0, role=false, snd-settle-mode=2, rcv-settle-mode=0, source=@source(40) [durable=0, timeout=0, dynamic=false], target=@targe
> t(41) [address="perf.topic", durable=0, timeout=0, dynamic=false], initial-delivery-count=0]
> [000000000068FC10]: <- AMQP
> [000000000068FC10]:0 <- @open(16) [container-id="router.10454", max-frame-size=16384, channel-max=32767, idle-time-out=8000, offered-capabilities=:"ANONYMOUS-RELAY", properties={:p
> roduct="qpid-dispatch-router", :version="0.6.0"}]
> [000000000068FC10]:0 <- @begin(17) [remote-channel=0, next-outgoing-id=0, incoming-window=61, outgoing-window=2147483647]
> [000000000068FC10]:0 <- @attach(18) [name="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) [address="perf.topic", durable=0, timeout=0, dynamic=false], initial-delivery-count=0]
> [000000000068FC10]:0 <- @flow(19) [next-incoming-id=0, incoming-window=61, next-outgoing-id=0, outgoing-window=2147483647, handle=0, delivery-count=0, link-credit=250, drain=false]
>
> on_sendable
> [000000000068FC10]:0 -> @transfer(20) [handle=0, delivery-id=0, delivery-tag=b"\x01\x00\x00\x00\x00\x00\x00\x00", message-format=0, settled=false, more=false] (148) "\x00Sp\xd0\x00
> \x00\x00\x0b\x00\x00\x00\x05BP\x04@BR\x00\x00Ss\xd0\x00\x00\x00-\x00\x00\x00\x0d@@@\xa1\x0atest@@@@\x83\x00\x00\x00\x00\x00\x00\x00\x00\x83\x00\x00\x00\x00\x00\x00\x00\x00@R\
> x00@\x00St\xd1\x00\x00\x004\x00\x00\x00\x04\xa1\x0ctest\xa1\x02test\xa1\x11test\xa1\x09test\x00Sw\xa1\x0bHello toto!"
> [000000000068FC10]:0 -> @detach(22) [handle=0, closed=true]
> [000000000068FC10]:0 -> @close(24) []
> on_sendable
> [000000000068FC10]: -> EOS
> [000000000068FC10]:0 <- @close(24) []
> [000000000068FC10]: <- EOS
>
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@qpid.apache.org
For additional commands, e-mail: users-help@qpid.apache.org