You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@qpid.apache.org by Michael Ivanov <iv...@logit-ag.de> on 2015/10/22 17:20:48 UTC
Error recovery in qpidd / proton communication
Hallo,
What kind of communication error recovery is available in proton library (if at all)?
I am using proton messenger in passive mode and I noticed very unpleasant behaviour:
wherever the connection to qpidd is broken (eg. when qpidd is restarted), the client
progan does not seem to get any notification about that, it just proceeds to run, but
does not get any messages from the queue anymore. Sasme behaviour is observed when
proton messenger just listens for incoming messages directly: wherever the receiver
program is restarted the sender is not notified and the messages are just get lost.
Is there any way to get a notifications about connection state change or should I use
a tracker for each message to test whether the message was delivered successfully?
As far as I understand the trackers mechanism I can use them only to poll for the
status of messages being sent? And if the messages are excluded from pni_store between
polling then I might still loose the information about message delivery result?
Please help me to sort this out.
Best regards,
--
\ / | |
(OvO) | Mikhail Iwanow |
(^^^) | |
\^/ | E-mail: ivans@logit-ag.de |
^ ^ | |
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@qpid.apache.org
For additional commands, e-mail: users-help@qpid.apache.org
Re: Error recovery in qpidd / proton communication
Posted by aconway <ac...@redhat.com>.
On Thu, 2015-10-22 at 22:20 +0300, Michael Ivanov wrote:
> Thanks for the advice,
>
> I am using messenger in passive mode integrating it into select
> -driven
> event loop. Mayxbe reactor would be more appropriate, but I have
> checked
> the proton api documentation and al reactor functions are regrettably
> uncommented.
>
> Where can I find c++ examples?
>
Funny you should say that, I want to write a C++ example of select
integration exactly because I feel the reactor approach is over
complicated (and as you say undocumented.)
If you haven't already, check out the proton C++ binding, which should
be part of the next release.
http://qpid.apache.org/releases/qpid-proton-master/proton/cpp/api/index
.html
Currently the binding is reactor based with everything controlled from
the Container::run() method. My proposal is to add an alternative
method of starting connections to the Container which returns a simple
bytes-in/bytes-out API that can be driven from select or any IO
framework. Almost all of the user code would be identical to what is
already shown in the C++ examples - user-implemented event handlers.
The only difference would be that instead of driving everything in a
single thread from the Container's run() method, each connection can be
driven independently (and concurrently) by your IO framework.
I'll try to get something out in the next few days.
Cheers,
Alan.
> Best regards,
>
>
> 22.10.2015 21:36, aconway пишет:
> > On Thu, 2015-10-22 at 18:20 +0300, Michael Ivanov wrote:
> > > Hallo,
> > >
> > > What kind of communication error recovery is available in proton
> > > library (if at all)?
> > > I am using proton messenger in passive mode and I noticed very
> > > unpleasant behaviour:
> > > wherever the connection to qpidd is broken (eg. when qpidd is
> > > restarted), the client
> > > progan does not seem to get any notification about that, it just
> > > proceeds to run, but
> > > does not get any messages from the queue anymore. Sasme behaviour
> > > is
> > > observed when
> > > proton messenger just listens for incoming messages directly:
> > > wherever the receiver
> > > program is restarted the sender is not notified and the messages
> > > are
> > > just get lost.
> > > Is there any way to get a notifications about connection state
> > > change
> > > or should I use
> > > a tracker for each message to test whether the message was
> > > delivered
> > > successfully?
> > > As far as I understand the trackers mechanism I can use them only
> > > to
> > > poll for the
> > > status of messages being sent? And if the messages are excluded
> > > from
> > > pni_store between
> > > polling then I might still loose the information about message
> > > delivery result?
> > >
> > > Please help me to sort this out.
> > >
> > > Best regards,
> >
> > Much of the focus on proton has moved away from messenger towards
> > an
> > event-driven approach using the reactor. That approach gives you
> > full
> > visibility of pretty much all protocol events including
> > connection/link/session close, disconnect etc. You might want to
> > take a
> > look. The programming style is quite different from messenger but
> > gives
> > you much greater control. There are good examples and a tutorial in
> > python and C++, I haven't looked at the C documentation recently.
> >
> > Cheers,
> > Alan.
> >
> > -------------------------------------------------------------------
> > --
> > To unsubscribe, e-mail: users-unsubscribe@qpid.apache.org
> > For additional commands, e-mail: users-help@qpid.apache.org
> >
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@qpid.apache.org
For additional commands, e-mail: users-help@qpid.apache.org
Re: Error recovery in qpidd / proton communication
Posted by Michael Ivanov <iv...@isle.spb.ru>.
Thanks for the advice,
I am using messenger in passive mode integrating it into select-driven
event loop. Mayxbe reactor would be more appropriate, but I have checked
the proton api documentation and al reactor functions are regrettably
uncommented.
Where can I find c++ examples?
Best regards,
22.10.2015 21:36, aconway пишет:
> On Thu, 2015-10-22 at 18:20 +0300, Michael Ivanov wrote:
>> Hallo,
>>
>> What kind of communication error recovery is available in proton
>> library (if at all)?
>> I am using proton messenger in passive mode and I noticed very
>> unpleasant behaviour:
>> wherever the connection to qpidd is broken (eg. when qpidd is
>> restarted), the client
>> progan does not seem to get any notification about that, it just
>> proceeds to run, but
>> does not get any messages from the queue anymore. Sasme behaviour is
>> observed when
>> proton messenger just listens for incoming messages directly:
>> wherever the receiver
>> program is restarted the sender is not notified and the messages are
>> just get lost.
>> Is there any way to get a notifications about connection state change
>> or should I use
>> a tracker for each message to test whether the message was delivered
>> successfully?
>> As far as I understand the trackers mechanism I can use them only to
>> poll for the
>> status of messages being sent? And if the messages are excluded from
>> pni_store between
>> polling then I might still loose the information about message
>> delivery result?
>>
>> Please help me to sort this out.
>>
>> Best regards,
>
> Much of the focus on proton has moved away from messenger towards an
> event-driven approach using the reactor. That approach gives you full
> visibility of pretty much all protocol events including
> connection/link/session close, disconnect etc. You might want to take a
> look. The programming style is quite different from messenger but gives
> you much greater control. There are good examples and a tutorial in
> python and C++, I haven't looked at the C documentation recently.
>
> Cheers,
> Alan.
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@qpid.apache.org
> For additional commands, e-mail: users-help@qpid.apache.org
>
--
\ / | |
(OvO) | Михаил Иванов |
(^^^) | Тел.: +7(911) 223-1300 |
\^/ | E-mail: ivans@isle.spb.ru |
^ ^ | |
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@qpid.apache.org
For additional commands, e-mail: users-help@qpid.apache.org
Re: Error recovery in qpidd / proton communication
Posted by aconway <ac...@redhat.com>.
On Thu, 2015-10-22 at 18:20 +0300, Michael Ivanov wrote:
> Hallo,
>
> What kind of communication error recovery is available in proton
> library (if at all)?
> I am using proton messenger in passive mode and I noticed very
> unpleasant behaviour:
> wherever the connection to qpidd is broken (eg. when qpidd is
> restarted), the client
> progan does not seem to get any notification about that, it just
> proceeds to run, but
> does not get any messages from the queue anymore. Sasme behaviour is
> observed when
> proton messenger just listens for incoming messages directly:
> wherever the receiver
> program is restarted the sender is not notified and the messages are
> just get lost.
> Is there any way to get a notifications about connection state change
> or should I use
> a tracker for each message to test whether the message was delivered
> successfully?
> As far as I understand the trackers mechanism I can use them only to
> poll for the
> status of messages being sent? And if the messages are excluded from
> pni_store between
> polling then I might still loose the information about message
> delivery result?
>
> Please help me to sort this out.
>
> Best regards,
Much of the focus on proton has moved away from messenger towards an
event-driven approach using the reactor. That approach gives you full
visibility of pretty much all protocol events including
connection/link/session close, disconnect etc. You might want to take a
look. The programming style is quite different from messenger but gives
you much greater control. There are good examples and a tutorial in
python and C++, I haven't looked at the C documentation recently.
Cheers,
Alan.
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@qpid.apache.org
For additional commands, e-mail: users-help@qpid.apache.org