Я отключаюсь от MQQueue и MQQueueManager с помощью следующего кода:
Queue.Close(); log.Info( "Queue IsOpen: " + Queue.IsOpen.ToString() ); Queue = null; QueueManager.Disconnect(); QueueManager.Close(); log.Info( "QM IsOpen: " + QueueManager.IsOpen.ToString() ); log.Info( "QM IsConnected: " + QueueManager.IsConnected.ToString() ); QueueManager = null;
И я получаю следующие записи журнала для этого:
Queue IsOpen: false QM IsOpen: false QM IsConnected: false
Но через несколько часов, когда я запускаю команду netstat -n из командной строки, я получаю длинный список подключений к серверу MQ, и состояние этих подключений — CLOSE_WAIT.
Любые идеи, почему TCP-соединения не закрываются полностью? Есть ли способ убить их из кода? В настоящее время мне придется перезапустить клиентское приложение, которое очищает открытые соединения.
Версия WebSphere MQ — 6.0.2.6, а библиотеки .NET — из MQ 7.