0

在我的应用程序中,我使用 MDB 侦听来自队列的消息,然后将请求消息发布到另一个队列。这种将消息发布到另一个队列的过程发生在 MDB 中。然后我使用接收方法等待响应,超时时间为 20 秒。现在发生的情况是,我发布到队列的请求消息在 20 秒内没有被传递。消息在 20 秒后送达,但此时接收方法返回,我们无法处理收到的请求响应。

我没有使用事务处理会话将消息发布到队列。请告诉我为什么在超时期限之前没有发送消息。

4

1 回答 1

0

使用 MDB 表明您在某种 Java EE 服务器中运行。您确定没有为您的 MDB 和 JMS 会话启用分布式 (JTA) 事务吗?这将解释在您的方法返回之前没有传递请求消息。即使会话事务被指定为假,也可以启用 JTA 事务。

这篇文很好地介绍了这个案例,尽管它有点旧了。

简短的回答是在开始等待回复之前使用 UserTransaction 并提交请求事务。

于 2013-04-16T20:31:04.593 回答