Мне нужно удалить/удалить моего абонента темы. Я нашел это http://activemq.apache.org/manage-durable-subscribers.html
Однако, это не достаточно для нас. Мы хотим контролировать время удаления подписчика, и независимо от того, есть какие-либо сообщения или нет. Кроме того, наша программа написана C#. Поэтому лучшим решением для нас является NMS API.Как удалить/удалить подписчика ActiveMQ с помощью NMS API
Спасибо.
Вот код,
Apache.NMS.ActiveMQ.ConnectionFactory factory = new Apache.NMS.ActiveMQ.ConnectionFactory(m_brokerURI);
m_connection = factory.CreateConnection(username, password);
Apache.NMS.ActiveMQ.Connection con = (Apache.NMS.ActiveMQ.Connection)m_connection;
ISession session = m_connection.CreateSession(AcknowledgementMode.AutoAcknowledge);
try
{
session.DeleteDurableConsumer(strQueueName);
}
catch (Exception ex)
{
// log the error message
}
Update
Наш сценарий довольно прост.
- Клиент построил очередь и подписался на потребителя по теме.
- клиентская сторона закрыла соединение.
- удалить потребитель на стороне сервера (в качестве примера кода в последнем обновлении)
Вот снимок ActiveMQ брокера через JConsole: jconsole snapshot
Мы хотели бы, чтобы удалить подписчик « 7B0FD84D-6A2A-4921-967F-92B215E22751” по следующему методу, Но всегда получил эту ошибку "javax.jms.InvalidDestinationException: нет долговечны подписки не существует для: 7B0FD84D-6A2A-4921-967F-92B215E22751"
strSubscriberName = “7B0FD84D-6A2A-4921-967F-92B215E22751”
session.DeleteDurableConsumer(strSubscriberName);
strQueueName приводит меня к мысли, что вы передаете имя очереди, а не подписное имя прочного абонента. –
Обновлен мой ответ, чтобы отразить мой обзор кода. –