我有一个for循环,它不断将消息放到JMS队列中,但很有可能以后for循环可能比Queue处理请求的速度更快,并且可能达到最大池限制。
我正在捕捉JMSException,但问题是我没有任何回退逻辑来恢复工作。我的意思是我可以存储传递给队列的最后一个元素的状态,但我不知道如何在遇到异常后开始将消息放回队列。我怎样才能开始将消息放回队列中确保不会抛出相同的异常。
答案 0 :(得分:0)
您应该使用适合峰值负载的监听器池设置JMS队列。这可以与您的应用服务器一起安排。
它还应该允许一个"死信队列"
。将以您描述的方式有毒的消息进行路由。最好配置某种改动方式,以便让你知道请求已经泄漏到地板上。
我不再理解对队列的迷恋了。我认为具有生产者/消费者队列的Web服务和处理请求的执行器池是队列的更好选择。那是20世纪90年代的IBM技术。