Shared consumers do not receive messages in C++ and acknowledged messages get redelivered
When using shared subscriptions with the C++ client we see the following issues:
-
The consumers stop consuming silently after a period of time, without any obvious reasons (e.g. connection failure) or any unusual log messages. The issue seems to happen randomly. Recreating the consumers with the same parameters seems to fix this issue for a while. We are experiencing this issue both using the synchronous and the async APIs. The topic is non-partitioned persistent topic. The server is a standalone server. We only see this problem with shared consumers, it doesn't seem to happen if we change to exclusive.
-
Acknowledged messages get redelivered to shared consumers in C++ after subscription. It seems to happen both with synchronous and async acknowledgment. The API docs on acknowledge() states that acknowleded messages should not be redelivered.
To Reproduce Create shared consumers in C++ for a topic and call receive. The problem seems to happen randomly but relatively frequently. It does not occur with exclusive consumers.
Expected behavior
- At least one of the shared consumers should receive each message.
- Acknowledged messages should not be redelivered.
Desktop (please complete the following information):
- RedHat 7.x
@orbang
For the first issue, do you have any code sample that we can use to reproduce the problem?
For the second issue, the current implementation of acknowledgment is the best effort. Until we introduce transaction, you will be expecting at-least-once delivery semantic. So the messages can potentially be redelivered due to a lost acknowledgment over the wire.
@orbang btw, which version of broker are you using?
The exact same issue is happening to me at some random time the no messages were delivered to my program and suddenly receiving a message after an hour or some times 6 hours.
After the consume got frozen, I debugged it with GDB and fount out the program is blocked in the mutex lock as shown the screenshot

After my debugging, I found out the following that for the shared subscription there was messages backlog because of consuming stopped.
