我有一个使用的WebSphere MQ通过WebSphere将数据发送到云中的数据中心的一个应用程序。 的功能的部分是,如果服务器侧用户检测到的消息还没有被接收到30分钟,该线程被暂停5分钟,并且连接被移除。 当它重新启动,它重新连接。
在实践中,我发现,隔离尚未删除的订阅。 当尝试重新连接时,我看到这个错误:
“有可能已创建订阅,由于它被另一个消息消费者的问题。请确保使用该订阅的任何消息的消费者试图创建下一个同名的新订阅之前被关闭。请参阅链接的异常以获取更多信息“。
这表明消息处理程序仍连接,这意味着断开连接失败。 对于XmsClient对象断开代码(库的一部分,但我的一个同事可能已经改变了它)是:
public override void Disconnect()
{
_producer.Close();
_producer.Dispose();
_producer = null;
_consumer.MessageListener = null;
_consumer.Close();
_consumer.Dispose();
_consumer = null;
_sessionRead.Close();
_sessionRead.Dispose();
_sessionRead = null;
_sessionWrite.Close();
_sessionWrite.Dispose();
_sessionWrite = null;
_connection.Stop();
_connection.Close();
_connection.Dispose();
_connection = null;
//GC.Collect();
IsConnected = false;
}
任何人有任何的想法,为什么连接是否仍然存在?