我有一个从JMS队列接收消息的“服务器”应用程序。以及客户端应用程序,它们创建临时队列,然后向服务器发送消息,将JMSReplyTo报头设置为临时队列。
服务器使用临时队列回复客户端。然而,服务器有许多回复客户端的回复,这些回复都是在很长一段时间内通过临时队列发送的(这些回复是特定于该客户端的,其他任何人都不感兴趣)。
我的服务器如何检测客户端是否断开连接,这样我就可以停止通过该特定的临时队列发送消息?或者我正在尝试用JMS做一些我不应该做的事情?
发布于 2009-07-08 17:13:22
那么,发送到该队列应该会失败,因为一旦客户端离开,该队列就不再存在。仅当创建临时队列的会话存在时,才应存在临时队列。
因此,我不认为在客户端离开时需要通知,这是不能通过JMS实现的,因为发送回复消息的尝试实际上表明了这一点。
发布于 2009-07-08 21:21:43
使用activeMQ,您可以将临时队列转换为Destination,然后询问目的地,例如
if (dest.getConsumers().size() < 1) {
// No more consumers on this destination, so kill it.
}或者从目的地获取DestinationStatistics,然后从getMessages()获取队列深度,如果大于n,则终止tempQ。
https://stackoverflow.com/questions/1099070
复制相似问题