Как можно программно очистить очередь ActiveMQ с помощью API Apache.NMS? - PullRequest
4 голосов
/ 15 февраля 2011

Мне нужна возможность программной очистки очереди с использованием Apache.NMS (C #).Я просматривал NMS API, но не вижу такой возможности.Это существует?

Ответы [ 2 ]

6 голосов
/ 16 февраля 2011

Нет прямого способа очистки очереди из NMS API, это скорее функция управления. Вы можете преобразовать экземпляр IConnection в Apahce.NMS.ActiveMQ.Connection и затем вызвать DeleteDestination. Это сработало бы, если бы в очереди не было потребителей, но, если они есть, сгенерирует исключение.

0 голосов
/ 23 апреля 2012

Не совсем точно, что вы подразумеваете под «очисткой» очереди (удалить все сообщения?), Но вы можете управлять сообщениями, установив транзакционный сеанс:

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

Тогда вы можете использовать:

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

или

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