gpt4 book ai didi

c# - IBM MQ XMS 订阅未关闭

转载 作者:行者123 更新时间:2023-11-30 22:24:56 24 4
gpt4 key购买 nike

我有一个应用程序使用 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;
}

有人知道为什么连接仍然存在吗?

最佳答案

从错误描述来看,服务器订阅者似乎正在创建持久订阅。即使订阅应用程序未运行,持久订阅也会继续接收消息。要删除持久订阅,您必须调用 Session.Unsubscribe()。简单地关闭消费者并不会删除订阅。

如果您打算在不删除订阅的情况下关闭订阅者,请先发出 Connection.Stop(),然后注销消息监听器,然后关闭消费者。调用 connection.Stop 方法停止消息传递。

关于c# - IBM MQ XMS 订阅未关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12508473/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com