c# - MessageListener,是否会获取并发消息

标签 c# ibm-mq xms

我正在使用 XMS 7.5 客户端访问 IBM MQ,并且想了解有关 MessageListener 的一件事。 当队列中存在多条消息时,

  • 关联的 MessageListener 方法(即下面代码中的 ProcessNewMessage)会同时调用吗?或
  • 消息一次只会被分派(dispatch)到 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)

最佳答案

消息一次传递给消费者,无论消费者是否调用 receive() 或者是否设置了消息监听器来接收消息。

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

关于c# - MessageListener,是否会获取并发消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31813384/

相关文章:

spring-boot - 使用 JMS 2.0 将传递延迟与 IBM MQ 结合使用

asynchronous - IBM MQ XMS 消息监听器仅获取队列中已有的消息而不是新消息

c# - MQ 错误原因 : 2058 randomly starts occurring in C# . NET 客户端在正常工作多天后

c# - 使用 C# 包装器时出现 Matlab 异常

c# - {"The specified cast from a materialized ' System.Guid' 类型到 'System.Int32' 类型无效。"

java - 是否可以从 MQ 队列中删除消息而不检索消息或清除队列?

ibm-mq - IBM MQ Client 9.0 在 Window 7 Professional SP1 上安装失败

c# - 分隔列表的更快方法

c# - 复杂类型参数属性未发生 Web Api 数据注释验证

java - 尝试运行 JMS-MQ 程序时出现身份验证错误