4

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

4

2 回答 2

6

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

于 2011-02-16T19:50:11.517 回答
0

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

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

然后你可以使用:

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

或者:

//on failure, back on queue
consumerSession.Rollback();
于 2012-04-23T17:11:04.143 回答