RabbitMQ Java API 在 Qpid returns 上调用的 queuePurge() 方法具有零消息计数的 PurgeOK 响应

RabbitMQ Java API queuePurge() method called on Qpid returns PurgeOK response with zero message count

我正在集成测试使用 RabbitMQ 客户端(amqp-客户端版本 5.7.0)和嵌入式 Apache Qpid 服务器对象的组件。

调用Channel.queuePurge()方法时,队列被清除。我可以使用 getMessageCount() 方法验证这一点。但是 queuePurge() 方法 returns 一个 PurgeOk 对象,它总是有 0 个消息计数。文档说 PurgeOK returns 已清除的消息计数。

   //The queue has 1 message.
   int f = getMessageCount();
   //verify message count
   assertEquals(f, 1);
   //purge
   com.rabbitmq.client.AMQP.Queue.PurgeOk purgeOK= channel.queuePurge(queueName);
   //the next test fails.
   //Shouldn't the purgeOK have count 1, to denote that one message was purged?
   assertEquals(purgeOK.getMessageCount(), 1);

只有在使用嵌入式 Qpid 服务器进行测试时才会发生这种情况。具有 Rabbit MQ 实际 运行 实例的相同测试用例给出了预期结果。

这是一个已知问题吗?有没有更好的方法来对清除功能进行单元测试?

这不是一个已知问题,我已经针对 Qpid Broker-J 中的这个缺陷提出了 an issue。感谢您帮助发现这一点。