2011-02-15 82 views

回答

4

没有直接的方法来从NMS API中清除队列,这更像是一个管理功能。您可以将IConnection实例强制转换为Apahce.NMS.ActiveMQ.Connection,然后调用DeleteDestination。如果队列中没有消费者,这将工作,但如果有的话会抛出异常。

+0

祝NMS包括管理API,但现在这个完成我所需要的。感谢提示,提姆! – Kilhoffer 2011-02-18 17:10:44

+0

NMS不可能包含管理API,因为代理是基于Java的,并且通过JMX进行管理。如果你想创建一个开源的库来通过.NET与JMX进行通信,那么我们可以,但是在那之前,基于NMS的客户端可以做些什么是有限制的。你可以编写一些基于Java的库来执行你需要的管理任务,并通过IKVM在你的.NET应用中运行它们。 – 2011-02-25 15:35:44

0

不完全知道你所说的“刷新”队列(信息全部删除?)的意思,但你可以通过设置会话事务管理的消息:

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

然后你可以使用:

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

或:

//on failure, back on queue 
consumerSession.Rollback(); 
相关问题