如何使用Apache.NMS API以编程方式清除ActiveMQ队列?

时间:2011-02-15 19:06:54

标签: activemq nms apache-nms

我需要能够使用Apache.NMS(C#)以编程方式清除队列。我一直在查看NMS API,但看不到这样的功能。它存在吗?

2 个答案:

答案 0 :(得分:6)

没有直接的方法从NMS API刷新队列,这更像是一个管理功能。您可以将IConnection实例强制转换为Apahce.NMS.ActiveMQ.Connection,然后调用DeleteDestination。如果队列中没有消费者,但如果存在异常,则会产生异常。

答案 1 :(得分:0)

不完全确定“刷新”队列的意思(删除所有邮件?),但您可以通过设置会话事务来管理邮件:

ISession consumerSession = = connection.CreateSession(AcknowledgementMode.Transactional);

然后你可以使用:

//will remove message from queue on success
consumerSession.Commit();

或:

//on failure, back on queue
consumerSession.Rollback();