Ranganatha
Ranganatha

Reputation: 1176

MessageListener, will it get concurrent messages

I'm using XMS 7.5 client to access the IBM MQ and wanted to know one thing about MessageListener. When there are multiple messages are present on the queue,

The code is something like below:

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)

Upvotes: 2

Views: 1389

Answers (1)

Shashi
Shashi

Reputation: 15283

Messages are delivered one at a time to consumer, it does not matter whether the consumer is calling receive() or has setup a message listener to receive messages.

In case of a message listener, MQ will wait for the OnMessage (in your case ProcessNewMessage) method to return before delivering the next suitable message.

Upvotes: 4

Related Questions