2014-02-11 3 views
0

Я кодирую C# и activemq, используя NMS 1.6.1 и ActiveMQ 5.9. Я хочу установить уникальный guid в пользовательском свойстве для каждого сообщения, когда я его отправлю, тогда я могу удалить конкретное сообщение с помощью его guid (НЕ чистить очередь, только удалять в нем одно сообщение). Поскольку я не нашел NMS api, который мог бы помочь, я думаю, что вызов activemq jmx api - единственный способ.
Сначала я хочу использовать IKVM, чтобы помочь мне, но это не сработало. Официальный сайт ActiveMQ говорит, что «Начиная с версии 5.8 мы предоставляем API-интерфейс REST для брокера. Используя мост Jolokia JMX-HTTP, можно получить доступ ко всем меткам брокера (например, к использованию памяти) и выполнить операции управления (например, очереди очистки) с помощью REST API «.
Поскольку я использую C#, могу ли я легко получить доступ к этим REST-управлению api? Может ли это управление REST api решить мою проблему? Или есть ли более простой способ?Могу ли я получить доступ к управлению ActiveMQ REST api в C#?

ответ

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.

+0

Да, ваше решение довольно умное, я должен был подумать более подробно. – hellknight