我需要删除/删除我的主题订阅者。我找到了这个http://activemq.apache.org/manage-durable-subscribers.html
但是,它对我们来说还不够好。我们要控制移除订阅者的时间,不管有没有消息。此外,我们的程序是用 C# 编写的。所以对我们来说最好的解决方案是 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
}
更新
我们的场景非常简单。
- 客户端构建了一个队列并订阅了一个主题的消费者。
- 客户端关闭了连接。
- 删除服务器端的消费者(如上次更新中的示例代码)
这是通过 jconsole 的 activemq 代理的快照: jconsole 快照
我们想通过以下方法删除订阅者“7B0FD84D-6A2A-4921-967F-92B215E22751”,但总是收到此错误“javax.jms.InvalidDestinationException:不存在持久订阅:7B0FD84D-6A2A-4921-967F-92B215E22751”
strSubscriberName = “7B0FD84D-6A2A-4921-967F-92B215E22751”
session.DeleteDurableConsumer(strSubscriberName);