我使用xms.net 8.0.0.8,我想在Web应用程序中启动多线程xms侦听器。
我使用新的Thread t = new Thread()...
启动processmessage代码但是出了问题,线程被卡住而没有读取消息?如果某人有多线程xms样本用于Web应用程序可以共享或告诉我的错误?或者这是xms中多线程的任何错误?
public void ProcessMessage()
{
try
{
ConnectionFactory = WsHelper.CreateConnectionFactoryWMQ();
Connection = WsHelper.CreateConnection(ConnectionFactory);
if (QueueMessage.MessageCallType == MessageCallType.WithoutControl)
Session = WsHelper.CreateSessionWithAutoAcknowledge(Connection);
else
Session = WsHelper.CreateSessionWithSessionTransaction(Connection);
Destination = WsHelper.CreateDestination(Session, QueueMessage.QueueName);
MessageConsumer = WsHelper.CreateConsumer(Session, Destination, QueueMessage);
MessageListener messageListener = new MessageListener(NewMessageProcess);
MessageConsumer.MessageListener = messageListener;
this.Connection.Start();
while (true)
{
if (stopping)
{
MessageConsumer.Close();
return;
}
Thread.Sleep(1000);
}
}
catch(ThreadAbortException ex)
{
throw ex;
}
catch (Exception ex)
{
throw ex;
}
}
private void NewMessageProcess(IBM.XMS.IMessage msg)
{
答案 0 :(得分:1)
这些看起来都不正确。多线程需要深入的编程知识。你的ThreadStart在哪里?确保每个线程都在执行自己与队列管理器的连接。另外,您是为所有线程定义了1个MessageListener还是每个线程都有自己的MessageListener?因为看起来你使用1来攻击多线程的所有线程。
您是否阅读了MessageListener上的MQ知识中心以及如何处理mutlit-threading: https://www.ibm.com/support/knowledgecenter/en/SSFKSJ_9.0.0/com.ibm.mq.xms.doc/xms_cmesdel_async.htm