【发布时间】:2011-06-27 20:33:14
【问题描述】:
我需要能够使用 Apache.NMS (C#) 以编程方式清除队列。我一直在查看 NMS API,但没有看到这样的功能。存在吗?
【问题讨论】:
标签: activemq nms apache-nms
我需要能够使用 Apache.NMS (C#) 以编程方式清除队列。我一直在查看 NMS API,但没有看到这样的功能。存在吗?
【问题讨论】:
标签: activemq nms apache-nms
没有从 NMS API 刷新队列的直接方法,这更多是一种管理功能。您可以将 IConnection 实例转换为 Apahce.NMS.ActiveMQ.Connection,然后调用 DeleteDestination。如果队列上没有消费者,这将起作用,但如果有,则会抛出异常。
【讨论】:
不确定您所说的“刷新”队列(删除所有消息?)是什么意思,但您可以通过设置会话事务来管理消息:
ISession consumerSession = = connection.CreateSession(AcknowledgementMode.Transactional);
然后你可以使用:
//will remove message from queue on success
consumerSession.Commit();
或:
//on failure, back on queue
consumerSession.Rollback();
【讨论】: