#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. извините, я не уверен, что вы имеете в виду, какой из них я не должен использовать и почему?