apache / apache/pulsar-client-cpp
Shared consumers do not receive messages in C++ and acknowledged messages get redelivered
- 主要語言
- C++
- 星號
- 71
- 分支
- 90
- 平均合併
- 2 小時 33 分鐘
- 30 天內合併 PR
- 3
描述
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
貢獻指南
研究方向
從 issue 中描述的 C++ shared-consumer 流程開始,涵蓋同步和非同步的 receive 與 acknowledge 呼叫。在使用 shared consumers 的未分割持久化 topic 上重現該流程,與 exclusive consumers 進行比較,並驗證每則訊息至少會傳遞給一個 consumer,且已 acknowledge 的訊息不會再次傳遞。
由索引模型根據 Issue 內容生成。
評估
- 技術堆疊
- cpp
- 領域
- distributed-systems
- Issue 類型
- 缺陷
- 難度
- 4/5
- 預估耗時
- 3-5 天
- 活躍度
- 停滯
- 描述清晰度
- 基本清楚
- 新手友好度
- 35/100