2009-07-08 69 views
0

我有一个“服务器”应用程序接收来自JMS队列的消息。和客户端应用程序创建一个临时队列,然后发送消息到服务器,将JMSReplyTo头设置为临时队列。JMS,检测当临时队列被破坏

服务器使用临时队列回复给客户端。但是服务器有很多回复客户端的请求都是通过临时队列发送很长一段时间(回复是特定于客户端的,并且对其他人不感兴趣)

我的服务器检测客户端是否断开 - 所以我可以停止通过特定的临时队列发送消息?或者我想用JMS来做事情,我不应该这样做?

回答

0

那么,发布到该队列应该失败,因为一旦客户端消失,它就不应该存在。临时队列只有在创建它的会话存在时才存在。

所以我没有看到当客户端不在的时候需要通知,而这是通过JMS无法做到的,因为发送回复消息的尝试实际上会表明这一点。

+0

那么,一些初始测试(使用activemq)显示服务器端在客户端被终止20秒后才会向临时队列atlest发送无错信息 – nos 2009-07-08 17:34:43

0

使用activeMQ,您可以将您的临时队列转换为Destination,然后询问目的地,例如,

if (dest.getConsumers().size() < 1) { 
    // No more consumers on this destination, so kill it. 
} 

或者从目标,得到了DestinationStatistics,然后从getMessages()得到队列深度,如果大于n然后杀死tempQ。