Событие ActiveMQ и NMSCorrelationID - PullRequest
       5

Событие ActiveMQ и NMSCorrelationID

0 голосов
/ 25 августа 2018

Я использовал следующий код для прослушивания сообщения через определенную очередь, и он работает нормально. Однако я бы не хотел, чтобы событие запускалось каждый раз, когда в очередь поступает новое сообщение, скорее, я хотел бы, чтобы оно запускалось только для тех сообщений с определенным NMSCorrelationID.

Есть ли способ вызвать событие MessageListener, только если существует определенный NMSCorrelationID?

Вот код, который я использую:

IConnectionFactory factory = new NMSConnectionFactory(activeMQ_URL);                    
IConnection connection = factory.CreateConnection(activeMQ_Username, activeMQ_Password);
ISession session = connection.CreateSession(AcknowledgementMode.IndividualAcknowledge); 
IDestination destination = session.GetQueue(queue);                                     
IMessageConsumer consumer = session.CreateConsumer(destination);                        
connection.Start();                                                                     
consumer.Listener += new MessageListener(OnMessage);                                    

1 Ответ

0 голосов
/ 25 августа 2018

Вы можете использовать селектор JMS для фильтрации только сообщений, которые соответствуют заданному идентификатору корреляции, создав потребителя с селектором вдоль линий или "JMSCorrelationID = 'ID: X'".В зависимости от того, как ваши сообщения помечаются тегами, это может сработать, или вы можете использовать какую-то схему, чтобы добавить свойства сообщений для выбора и сделать это таким образом.

...