1

我正在尝试使用 .NET 客户端连接到现有的 JMS 队列。我知道队列正在工作,我已经使用 IBM MQ Explorer 浏览过它。

在以下代码中,对 factory.CreateConnection 的调用一直挂起 - 它不会跳转到下一行,也不会显示任何错误消息。它甚至不消耗任何CPU。

是否有任何选项我应该尝试让它工作(或至少让它向我显示任何类型的错误消息)?

private static IConnectionFactory GetConnectionFactory()
    {
        var factoryFactory = XMSFactoryFactory.GetInstance(XMSC.CT_WMQ);
        var cf = factoryFactory.CreateConnectionFactory();

        cf.SetStringProperty(XMSC.WMQ_HOST_NAME, "server address");
        cf.SetIntProperty(XMSC.WMQ_PORT, portnumber);
        cf.SetStringProperty(XMSC.WMQ_CHANNEL, "channelname");
        cf.SetIntProperty(XMSC.WMQ_CONNECTION_MODE, XMSC.WMQ_CM_CLIENT);
        cf.SetStringProperty(XMSC.WMQ_QUEUE_MANAGER, "queuemanager");
        cf.SetIntProperty(XMSC.WMQ_BROKER_VERSION, XMSC.WMQ_BROKER_UNSPECIFIED);

        return (cf);
    }

主要方法有以下几点:

var factory = GetConnectionFactory();
var connection = factory.CreateConnection("username", null);
4

1 回答 1

1

我没有看到您的代码有任何问题,使用 MQ v8 对其进行了测试并且工作正常。我建议你这样做:

1) XMS 也可以在非托管模式下运行。所以改变

cf.SetIntProperty(XMSC.WMQ_CONNECTION_MODE, XMSC.WMQ_CM_CLIENT);

cf.SetIntProperty(XMSC.WMQ_CONNECTION_MODE, XMSC.WMQ_CM_CLIENT_UNMANAGED)

看看是否有帮助。

2)当调用挂起时,进入debug,查看调用栈来确定挂起点。如果没有消耗 CPU,它可能正在等待某个系统事件。

3) 与 IBM 开立 PMR。

于 2015-06-25T11:26:08.003 回答