Ted Ross wrote:
Jonathan Robie (JIRA) wrote:
Messages get lost between credit allocation and
------------------------------------------------
Key: QPID-783
URL: https://issues.apache.org/jira/browse/QPID-783
Project: Qpid
Issue Type: Bug
Components: C++ Client, Java Client, Python Client, Ruby
Client
Reporter: Jonathan Robie
As I understand it, a client should receive all messages sent after
it subscribes and allocates credit.
Currently, the C++ client sometimes loses messages sent between the
time credit is allocated and the time that dispatcher.listen() is
called. I believe this is wrong behavior. This bug has been observed
in Listener.cpp for both fanout and direct. We suspect this problem
exists also in at least the Python client.
Correct behavior, as I understand it, is to queue all messages sent
after credit is allocated.
Jonathan
Jonathan,
I think the last thing you should do when setting up a subscription is
to set the credits. I noticed in the Python examples that the credits
are set before queue.listen is called. If you call queue.listen
before setting credits, you should never lose messages. I assume this
is the same for the C++ API.
Hi Ted,
I agree that this is an effective workaround, but I still think this is
a bug that needs to be fixed. In C++, another effective workaround is to
use the SubscriptionManager.
But the bug needs fixing ...
Jonathan