MessageListener, будет ли он получать параллельные сообщения

Я использую клиент XMS 7.5 для доступа к IBM MQ и хотел узнать одну вещь о MessageListener. Когда в очереди присутствует несколько сообщений,

  • будет ли вызываться связанный метод MessageListener(то есть ProcessNewMessage в приведенном ниже коде) одновременно? ИЛИ ЖЕ
  • Сообщения будут отправлены методу MessageListener(т.е. ProcessNewMessage в приведенном ниже коде) только за один раз?

Код выглядит примерно так:

private XMSFactoryFactory xMSFactoryFactory;
private IConnectionFactory connectionFactory;
private IConnection connectionWMQ;
private ISession sessionWMQ;
private IDestination destination;
private IMessageConsumer messageConsumer;

xMSFactoryFactory= XMSFactoryFactory.GetInstance(XMSC.CT_WMQ);
connectionFactory = _xMSFactoryFactory.CreateConnectionFactory();
// Set queue manager name, set server names, channel, use
// XMSC.WMQ_CM_CLIENT as WMQ_CONNECTION_MODE

connectionWMQ = _connectionFactory.CreateConnection();
sessionWMQ = _connectionWMQ.CreateSession(true, AcknowledgeMode.SessionTransacted);
destination = sessionWMQ.CreateQueue(_queueSettings.QueueName);
messageConsumer = sessionWMQ.CreateConsumer(_destination);


messageConsumer.MessageListener = new MessageListener(ProcessNewMessage)

1 ответ

Решение

Сообщения доставляются потребителю по одному, не имеет значения, звонит ли потребитель receive() или настроил прослушиватель сообщений для получения сообщений.

В случае прослушивателя сообщений MQ будет ждать OnMessage (в твоем случае ProcessNewMessage) метод возврата перед доставкой следующего подходящего сообщения.

Другие вопросы по тегам