IBM.XMS ExceptionListener 未触发

发布于 2024-11-17 10:15:46 字数 1897 浏览 2 评论 0原文

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

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

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

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);
    }
}

I am using IBM.XMS 2.0.0.5 and MQ Client 7.0.1.5 and have created a connection, set the exception listener, started the connection and started listening for messages using a message listener. This works fine, except that the ExceptionListener does not fire when I disable the network connection. Instead I get an unhandled socket exception.

I have gone back to the example given on the IBM site and recreated the error:

If I disable the network connetion I get the unhandled socket exception and the exceptionListener does not get fired.

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);
    }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

无人接听 2024-11-24 10:15:46

我将答案提出来,希望它可以节省别人为我浪费的时间。

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

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

I'll put the answer up in the hope that it saves someone the time it wasted for me.

You need to use an unmanaged client connection in order to connect up an exception listener to your connection.

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

〃温暖了心ぐ 2024-11-24 10:15:46

如果它只是在非托管模式下工作,那么这是 XMS .NET v2.0.0.5 上的错误。它也应该在托管模式下工作(XMSC.WMQ_CM_CLIENT_MANAGED)。请移至最新的修复包并再次测试。

If it's just worked in Unmanaged mode, then it's a bug at XMS .NET v2.0.0.5. It should work in Managed mode also (XMSC.WMQ_CM_CLIENT_MANAGED). Please move to the latest fix pack and test again.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文