我们目前正在使用JmsTemplate的send(Destination,messageCreator)方法向webMethods队列发送消息。但是,有时候send方法需要很长时间才能返回,因为我们的超时应该只有5秒。我的问题是我们如何确保这一点?似乎JmsTemplate没有发送超时。
我认为我们拥有的一个选项是等待send()方法的5秒响应。如果它超过5秒,我们会认为它失败了。但是,我们需要确保发送的消息(尝试发送)根本不会被处理,因为我们会将此请求视为失败。我们如何做到这一点?回滚?谢谢!
答案 0 :(得分:1)
JmsTemplate
是核心JMS API的更高级抽象。该核心(JMS)API没有这样的机制。
JMS发送这么长时间是非常不寻常的;除非你有非常大的消息和缓慢的网络。
您可以在另一个线程上处理发送并尝试在5秒后中断它,但这只有在JMS客户端库代码可中断时才会起作用。
然而,由于竞争条件,通常不可能做到你想要的东西。