Websphere MQ 7.0.1 C# XMS-соединение, вызывающее ошибку 10054 (X’2746′) tcp

#c# #.net #ibm-mq

#c# #.net #ibm-mq

Вопрос:

У меня есть простая программа, подключающаяся к удаленному администратору очередей, которая, похоже, работает нормально, и я могу отправлять и получать сообщения. Однако я заметил, что при каждом подключении я получаю ошибки в диспетчере событий приложений Windows:

Ошибка при получении от хоста myhost (12.213.143.252).

Произошла ошибка при получении данных с моего хоста (12.213.143.252) по протоколу TCP / IP. Это может быть связано с сбоем связи.

Код возврата из вызова TCP/IP recv() был 10054 (X’2746′). Запишите эти значения и сообщите системному администратору.

Я подумал, что это может быть связано с неправильным отключением на стороне клиента, хотя я не уверен, что я делаю неправильно. Вот код, который я использую для тестирования подключения, которое по-прежнему вызывает эту проблему:

         XMSFactoryFactory factoryFactory = XMSFactoryFactory.GetInstance(XMSC.CT_WMQ);           
        IConnectionFactory cf = factoryFactory.CreateConnectionFactory();

        cf.SetStringProperty(XMSC.WMQ_QUEUE_MANAGER, WebSphereConfigObject.QueueManager);
        cf.SetStringProperty(XMSC.WMQ_HOST_NAME, WebSphereConfigObject.Host);
        cf.SetIntProperty(XMSC.WMQ_PORT, WebSphereConfigObject.Port);
        cf.SetStringProperty(XMSC.WMQ_CHANNEL, WebSphereConfigObject.ServerConnectionChannel);
        cf.SetIntProperty(XMSC.WMQ_CONNECTION_MODE, XMSC.WMQ_CM_CLIENT);
        IConnection connection = cf.CreateConnection();
        ISession session = connection.CreateSession(false, AcknowledgeMode.AutoAcknowledge);
        connection.Start();
        session.Close();
        connection.Stop();
        connection.Close();
  

любая помощь приветствуется!

Ответ №1:

Из того, что я видел, это событие 10054 регистрируется процессом диспетчера очередей, amqrmppa. Событие регистрируется, когда соединение сокета между этим процессом диспетчера очередей и клиентским приложением XMS внезапно прерывается.

Обычное завершение не регистрирует никаких событий.

Комментарии:

1. итак, что не так с приведенным выше кодом, который может привести к внезапному завершению?

2. Нет, я не вижу ничего плохого в приведенном выше коде. Этот код не регистрирует никаких событий для меня. Я использую MQ v7016. Возможно, вы захотите выполнить трассировку на стороне диспетчера очередей, чтобы выяснить, что происходит не так.

3. хорошо, я отследил это при установлении соединения и имею файл трассировки для amqrmppa.exe процесс. Однако я понятия не имею, где искать в этом файле 1400 строк, что может произойти, или что с этим делать, с чего мне начать?

Ответ №2:

Старайтесь не использовать вызовы both .close !!!

с. [1]: http://www-01.ibm.com/support/docview.wss?uid=swg27024064

Закрывайте и отключайте соединения, правильно кодируйте приложения для правильного закрытия или удаления объектов XMS, которые больше не используются. Невыполнение этого требования, особенно для экземпляров IConnection или ISession, может ограничить количество подключений к диспетчеру очередей.

Комментарии:

1. извините, я не уверен, что вы имеете в виду, какой из них я не должен использовать и почему?