【发布时间】:2013-07-08 23:10:27
【问题描述】:
我有一个ThreadPoolExecutor,它运行几个核心和一定的最大线程数。
运行的任务为每个线程创建 HornetQ(独立)连接,并在线程运行时保持它们处于活动状态。但是,当线程keepAliveTime 到期并且线程死亡时,我们无法关闭它们。有没有办法在线程死掉之前清理资源?
解决此问题的一种方法是对 HornetQ 连接使用池解决方案。
非常感谢任何建议。
【问题讨论】:
-
这有点含糊:“但是,当线程keepAliveTime时我们无法关闭它们”......你的意思是什么。我试图回答你,但我无法理解这个问题。我是 HornetQ 的项目负责人,我会尽力回答你。
-
我和 Geni 一起工作。我们正在尝试找出一种方法(如果可能)在我们的线程在空闲后死亡时自动关闭 HornetQ 连接。当线程处于活动状态时,我们希望在每个线程中保持与 HornetQ 的连接打开。目前,我们在日志中收到 HornetQ 连接处于打开状态的警告。这还不错,但我们不希望向我们的日志发送垃圾邮件。
-
如果我们能够为 HornetQ 独立实现池解决方案(连接和会话),那就太好了。我们可以在发送消息后简单地将连接和会话返回到池中,让池来处理它。
-
如果你使用的是JDK 1.7,你可以在一个可关闭的接口上嵌入东西,一旦超出范围就会关闭。
标签: java resources hornetq threadpoolexecutor resource-cleanup