首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IBM.XMS ExceptionListener未触发

IBM.XMS ExceptionListener未触发
EN

Stack Overflow用户
提问于 2011-06-28 20:44:48
回答 2查看 1.5K关注 0票数 4

我正在使用IBM.XMS 2.0.0.5和MQ Client 7.0.1.5,并且已经创建了一个连接,设置了异常侦听器,启动了连接,并开始使用消息侦听器侦听消息。这工作得很好,除了当我禁用网络连接时ExceptionListener不会触发。相反,我得到了一个未处理的套接字异常。

我已经返回到IBM站点上给出的示例,并重新创建了错误:

如果我禁用网络连接,我会得到未处理的套接字异常,并且exceptionListener不会被触发。

代码语言:javascript
复制
using System;
using System.Threading;
using IBM.XMS;

public class Sample
{
    public static void Main()
    {
        XMSFactoryFactory factoryFactory = XMSFactoryFactory.GetInstance(XMSC.CT_WMQ);

        IConnectionFactory connectionFactory = factoryFactory.CreateConnectionFactory();
        connectionFactory.SetStringProperty(XMSC.WMQ_HOST_NAME, "**********");
        connectionFactory.SetStringProperty(XMSC.WMQ_CHANNEL, "*****");
        connectionFactory.SetIntProperty(XMSC.WMQ_PORT, 1414);
        connectionFactory.SetIntProperty(XMSC.WMQ_CONNECTION_MODE, XMSC.WMQ_CM_CLIENT);
        connectionFactory.SetStringProperty(XMSC.WMQ_QUEUE_MANAGER, "*********");

        //
        // Create the connection and register an exception listener
        //

        IConnection connection = connectionFactory.CreateConnection();
        connection.ExceptionListener = new ExceptionListener(OnException);

        ISession session = connection.CreateSession(false, AcknowledgeMode.AutoAcknowledge);
        IDestination queue = session.CreateQueue("queue://***********");

        //
        // Create the consumer and register an async message listener
        //

        IMessageConsumer consumer = session.CreateConsumer(queue);
        consumer.MessageListener = new MessageListener(OnMessage);

        connection.Start();

        while (true)
        {
            Console.WriteLine("Waiting for messages....");
            Thread.Sleep(1000);
        }
    }

    static void OnMessage(IMessage msg)
    {
        Console.WriteLine(msg);
    }

    static void OnException(Exception ex)
    {
        Console.WriteLine(ex);
    }
}
EN

回答 2

Stack Overflow用户

发布于 2011-06-30 22:06:21

我会把答案放在网上,希望它能节省一些人为我浪费的时间。

您需要使用非托管客户端连接才能将异常侦听器连接到您的连接。

connectionFactory.SetIntProperty(XMSC.WMQ_CONNECTION_MODE,XMSC.WMQ_CM_CLIENT_UNMANAGED);

票数 6
EN

Stack Overflow用户

发布于 2013-09-01 18:39:48

如果它只是在非托管模式下工作,那么它就是XMS .NET v2.0.0.5中的一个bug。它也应该在托管模式下工作(XMSC.WMQ_CM_CLIENT_MANAGED)。请移动到最新的修复包并再次测试。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6506593

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档