我需要能够使用Apache.NMS(C#)以编程方式清除队列。我一直在查看NMS API,但看不到这样的功能。它存在吗?
答案 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();