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。感谢您帮助发现这一点。
我正在集成测试使用 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。感谢您帮助发现这一点。