JMSTemplate send()的回滚或超时

时间:2014-03-31 03:56:19

标签: java jms spring-jms webmethods

我们目前正在使用JmsTemplate的send(Destination,messageCreator)方法向webMethods队列发送消息。但是,有时候send方法需要很长时间才能返回,因为我们的超时应该只有5秒。我的问题是我们如何确保这一点?似乎JmsTemplate没有发送超时。

我认为我们拥有的一个选项是等待send()方法的5秒响应。如果它超过5秒,我们会认为它失败了。但是,我们需要确保发送的消息(尝试发送)根本不会被处理,因为我们会将此请求视为失败。我们如何做到这一点?回滚?谢谢!

1 个答案:

答案 0 :(得分:1)

JmsTemplate是核心JMS API的更高级抽象。该核心(JMS)API没有这样的机制。

JMS发送这么长时间是非常不寻常的;除非你有非常大的消息和缓慢的网络。

您可以在另一个线程上处理发送并尝试在5秒后中断它,但这只有在JMS客户端库代码可中断时才会起作用。

然而,由于竞争条件,通常不可能做到你想要的东西。