IBM XMS Websphere MQ MultiThread

时间:2018-04-03 13:58:02

标签: ibm-mq xms

我使用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)
    {

1 个答案:

答案 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

相关问题