关于Milo SDK SubscriptionListener:触发onSubscriptionTransferFailed后重建订阅是否需先调用deleteSubscription?
Milo SDK订阅转移失败后,重新创建订阅前必须清旧订阅吗?
当onSubscriptionTransferFailed事件触发时,一定要调用OpcUaSubscriptionManager.deleteSubscription清除旧订阅,理由如下:
- 旧订阅转移失败后,客户端本地仍持有其引用,服务器端也可能残留异常状态的资源,不清理会导致内存、网络连接等资源泄漏
- 直接创建新订阅,客户端的订阅管理器可能出现订阅ID冲突或状态混乱,影响新订阅的正常运行
- 调用删除接口能同步让服务器端回收残留资源,避免后续订阅操作出现异常
实操流程参考:
- 触发
onSubscriptionTransferFailed事件后,先调用deleteSubscription传入旧订阅实例完成清理 - 确认删除操作完成(可通过回调或状态检查)后,再执行新订阅的创建逻辑
- 新订阅创建成功后,重新添加之前的监控项(MonitoredItem)
内容的提问来源于stack exchange,提问作者Bin Chen
相关产品推荐
相关产品推荐

