1
我的代码:C#:IBM MQ“解锁”消息使用Read()方法时
//Initialize MQMessage
MQMessage message = new MQMessage();
//Initialize WebMQConnection
WebSphereMQConnection mqRequestConnection = new WebSphereMQConnection(initQMName, initQChannel, initQConnection, initQName, string.Empty, string.Empty);
mqRequestConnection.Open();
mqRequestConnection.Read(message);
//Get the contents as a string
string body = message.ReadString(message.MessageLength);
return body;
该代码是一个控制台应用程序的一部分,并且如预期用于浏览队列顺序和读取每个消息的工作原理。它解析来自平面文件的字符串内容。
但是,似乎Read()方法也会锁定消息,直到程序关闭。即使我在一个循环中运行该程序以顺序读取所有消息,但在程序完全关闭之前似乎不会“释放”这些消息。
我已经试过取得和放置,处置,退出等,并没有什么似乎工作,除了停止整个控制台应用程序的执行。
'WebSphereMQConnection'看起来并不像IBM提供的东西。你可以发布这是做什么?它是否在同步点下打开队列?如果是这样,您需要为MQ添加提交以“释放”消息。 – JoshMc
@JoshMc它是一个类的构造函数,最终在调用处理Syncpoint操作的Open()时创建队列管理器。这是传统的代码,我没有太多的控制权。我尝试添加一个提交,但它似乎没有做任何事情。我开始认为这个问题可能与我给出的核心代码有关。 – Reed
也许有一种方法可以执行提交? – JoshMc