Open Chunlin-Li opened 5 years ago
背景: 因为 Producer 并不会持续发送数据,所以希望在收到任务调度的时候,初始化 Producer 并处理异步任务进行发送,任务结束后,销毁 Producer 以免占用额外的资源(CPU,内存,socket 连接等)
问题: 使用 Producer 发送数据后,看到 socket 的建立以及周期任务的执行;但调用 .close() 方法后,日志显示已经 unregister producer 并且 producer close 了,但已建立的 socket 连接依然是 ESTAB 状态,且日志依然周期性的输出 mq 相关任务的执行
.close()
unregister producer
producer close
ESTAB
ali-one 版本: 3.6.5 node: 10.9.0
----------- 2019-06-19 22:23-------- 排查发现是因为 _producerTable 里面除了自己注册上去的 producer 外,还有一个 defaultProducer。 在 close 的时候,自己的 producer 移除掉了,但是 defaultProducer 还在, 导致 mq_client 不能关闭 mq_client_api.
是否可以考虑在 close 时检查当前是否只剩一个 defaultProducer,如果是的话就将其一并关掉,如果还有其他 Producer 或 Consumer 则继续保留。
背景: 因为 Producer 并不会持续发送数据,所以希望在收到任务调度的时候,初始化 Producer 并处理异步任务进行发送,任务结束后,销毁 Producer 以免占用额外的资源(CPU,内存,socket 连接等)
问题: 使用 Producer 发送数据后,看到 socket 的建立以及周期任务的执行;但调用
.close()
方法后,日志显示已经unregister producer
并且producer close
了,但已建立的 socket 连接依然是ESTAB
状态,且日志依然周期性的输出 mq 相关任务的执行ali-one 版本: 3.6.5 node: 10.9.0
----------- 2019-06-19 22:23-------- 排查发现是因为 _producerTable 里面除了自己注册上去的 producer 外,还有一个 defaultProducer。 在 close 的时候,自己的 producer 移除掉了,但是 defaultProducer 还在, 导致 mq_client 不能关闭 mq_client_api.
是否可以考虑在 close 时检查当前是否只剩一个 defaultProducer,如果是的话就将其一并关掉,如果还有其他 Producer 或 Consumer 则继续保留。