How can I programatically purge an ActiveMQ queue using the Apache.NMS API?

2.8k views Asked by At

I need the ability to purge a queue programatically using Apache.NMS (C#). I've been looking through the NMS API, but see no such capability. Does it exist?

2

There are 2 answers

2
Tim Bish On BEST ANSWER

There isn't a direct way to flush a Queue from the NMS API, that's more of a management function. You can cast a IConnection instance into an Apahce.NMS.ActiveMQ.Connection and then call DeleteDestination. This would work if there were no consumers on the Queue but will throw an exception if there are.

1
user1351848 On

Not exactly sure what you mean by "flush" a queue (delete all messages?) but you can manage messages by setting the session transactional:

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

Then you can use either:

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

or:

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