2014-02-11 42 views
0

我用c#和activemq編碼,使用NMS 1.6.1和ActiveMQ 5.9。我想在發送時在每個消息的自定義屬性中設置一個唯一的guid,然後我可以通過其guid刪除特定的消息(而不是清除隊列,只刪除其中的一條消息)。由於我沒有找到任何可以提供幫助的NMS api,我認爲調用activemq jmx api是唯一的方法。
起初我想用IKVM來幫助我,但它不能正常工作。 ActiveMQ官方網站稱:「從版本5.8開始,我們爲代理提供REST管理API。使用Jolokia JMX-HTTP橋接器,可以使用REST訪問所有代理指標(如內存使用情況)和執行管理操作(如清除隊列) API「。
由於我使用c#,我可以輕鬆訪問這些REST管理api嗎?這些REST管理api可以解決我的問題嗎?或者有沒有更簡單的方法?我可以在c#中訪問ActiveMQ REST管理api嗎?

回答

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

相關問題