Pulsar 中意外的积压大小

Unexpected backlog size in Pulsar

我正在使用 Pulsar 进行服务之间的通信,但我在对生产者和消费者进行的非常简单的测试中遇到了问题。

在 JUnit 4 测试中,我启动了(我自己的包装器)一个 ZooKeeper 服务器、一个 BookKeeper bookie 和一个 PulsarService;配置应该挺标准的。

测试可以总结为以下步骤:

  1. 建立生产者;
  2. 构建一个消费者(例如,一个 reader 的 Pulsar 主题);
  3. 检查message backlog(使用精确积压);
    • 这是通过 PulsarAdmin#topics#getStats#subscriptions
    • 获取当前订阅来完成的
    • 我希望它是 0,因为没有发送任何关于该主题的内容,但有时它是 1,但这似乎是另一个问题...
  4. 建立一个新的生产者并同步向主题发送消息;
  5. 建立一个新的消费者并阅读该主题的消息;
    • 我预计会积压一条消息,而我实际上阅读了一条
  6. 新建生产者,同步发送4条消息;
  7. 再次获取消息,使用在第 5 步读取的消息 ID 作为 start message ID
    • 我预计这里会积压 4 条消息,大多数时候这个值是正确的,但是 运行 测试大约十次我总是得到 2 或 5

我尝试调试测试,但无法弄清楚这些值的来源;我是不是误会了什么?

您可以尝试(如果还没有)的事情: