2014-02-11 2 views
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로 내 문제를 해결할 수 있습니까? 아니면 더 쉬운 방법이 있습니까?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

관련 문제