我在 Jboss 4.2.2 上部署了一个 MDB,在同一台服务器上部署了一个客户端,它产生消息并期望通过在发送消息之前创建的临时队列从 MDB 得到回复。
当我运行客户端时,我看到它创建了消息,将其放入队列并等待回复(到目前为止没有问题)......但是当我检查日志时,我看到超时并且没有响应收到。当超时发生并且客户端的方法完成时,MDB 开始处理在客户端将消息放入队列时应该已处理的消息。由于此时间问题,当 MDB 尝试回复临时队列时,它会失败,因为客户端已经离开。
如果我从远程服务器运行相同的客户端,我没有问题... MDB 立即从队列中获取消息,并且客户端在处理完成后立即收到其响应。
我正在使用容器管理的事务。我怀疑它与此有关......我认为客户端的“发送消息/接收回复”在提交将消息放入队列之前可能都被视为事务......但我不确定是否这是对的。如果是这种情况,为什么我没有从远程客户端看到相同的行为?客户端管理的事务是默认设置吗?这就是我的远程服务器使用的?
知道如何解决这个问题吗?
提前致谢!PJ