0

我正在使用 NMS 1.6.1 和 ActiveMQ 5.9 使用 c# 和 activemq 进行编码。我想在发送时为每条消息在自定义属性中设置一个唯一的 guid,然后我可以通过其 guid 删除特定消息(不清除队列,只删除其中的一条消息)。由于我没有找到任何可以提供帮助的 NMS api,我认为调用 activemq jmx api 是唯一的方法。
起初我想使用 IKVM 来帮助我,但它没有正常工作。ActiveMQ 官方网站说:“从 5.8 版开始,我们为代理提供 REST 管理 API。使用 Jolokia JMX-HTTP 桥,可以访问所有代理指标(如内存使用情况)并使用 REST 执行管理操作(如清除队列) API。”
由于我使用的是 c#,我可以轻松访问这些 REST 管理 api 吗?这些 REST 管理 api 可以解决我的问题吗?或者有没有更简单的方法?

4

1 回答 1

1

您应该能够创建一个消费者,并将选择器设置为您的 GUID 以删除特定消息。例如:

ISession session = connection.CreateSession(AcknowledgementMode.AutoAcknowledge);
IMessageConsumer consumer = session.CreateConsumer(destination, string.Format("CustomProperty = '{0}'", msgGUID));
IMessage msg = consumer.Receive();

这将消耗单个消息并将其从队列中删除。我不认为 JMX REST API 是必要的。

于 2014-02-12T20:53:02.393 回答