2

我正在使用 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)
4

1 回答 1

4

消息一次传递给消费者,消费者是在调用receive()还是设置了消息侦听器来接收消息都没有关系。

如果是消息侦听器,MQ 将等待OnMessage(在您的情况下ProcessNewMessage)方法返回,然后再传递下一条合适的消息。

于 2015-08-04T16:09:05.857 回答