我目前正在开发一个产品,该产品有其自己的JMS提供程序,其实现没有很好的文档记录。我必须在Java中准备一个独立的客户端应用程序,它将把消息发布到JMS队列中。我期待着一个巨大的数据量,因此我正在考虑实现一个JMS连接池和会话池。JMS连接和会话池
在任何对象池中,我们需要确定对象是否健康,然后将其返回给客户端。 JMS似乎没有提供“isHealthy()”方法。另外,我无法依赖ExceptionListener,主要是因为我不确定JMS提供者的实现,而且ExceptionListener的调用也是异步的。我想知道如果在调用onException之前将连接切换到客户端会发生什么情况。
作为解决方案,我计划使用TCP空闲连接超时。我的理解是,仅当TCP空闲时间连接超时结束或者JMS提供程序关闭时,连接才会变得不健康。
因此,我打算创建一个池连接包装器对象,该连接包装器对象将在创建连接或由客户端返回到池时存储“最后使用时间”。在将连接移交给客户端之前,池将检查自“上次使用时间”以来的时间间隔是否少于3分钟(假设默认TCP空闲连接超时为5分钟)。
我的理解和实现是否正确?