XMS.NET висит бесконечно на фабрике.CreateConnection("имя пользователя", ноль);

Я пытаюсь подключиться к существующей очереди JMS с клиентом.NET. Я знаю, что очередь работает, я уже просматривал ее с помощью IBM MQ Explorer.

В следующем коде вызов factory.CreateConnection продолжает зависать - он не переходит на следующую строку и не показывает никакого сообщения об ошибке. Он даже не потребляет процессор.

Есть ли какие-либо варианты, которые я должен попытаться заставить это работать (или по крайней мере заставить это показывать мне сообщение об ошибке любого вида)?

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

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) Когда вызов зависает, перейдите в режим отладки и посмотрите стек вызовов, чтобы определить точку зависания. Это может быть ожидание какого-либо системного события, если не используется ЦП.

3) Откройте PMR с IBM.

Другие вопросы по тегам