我正在集成测试使用RabbitMQ客户端(amqp客户端版本5.7.0)和嵌入式Apache Qpid服务器对象的组件。
调用Channel.queuePurge()
方法时,将清除队列。我可以使用getMessageCount()
方法进行验证。但是queuePurge()
方法返回一个PurgeOk
对象,该对象始终具有0个消息计数。文档说PurgeOK
返回已清除的消息计数。
//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的问题。感谢您在发现此问题上的帮助。