Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我们有一个应用程序部署到带有 MDB 的 glassfish 服务器,由于其他原因,它必须使用 Bean 类型的事务 (TransactionManagementType.BEAN)。
在某些情况下,在 onMessage() 方法中,我们希望能够查看消息并拒绝它。“拒绝”是指将消息放回队列并稍后重新发送。
我搜索了一下,但我发现的所有内容似乎都说我应该将事务类型更改为容器并调用 setRollbackOnly()。但是,正如我上面所说,由于其他限制,这不是一个选择。
有没有办法做到这一点?
尽管 MDB 可能会抛出异常并回滚当前事务,从而强制调用者重新发送消息,但 bean 管理的事务方法无法加入现有事务。我认为要实现这种行为,您应该在发送方和接收方 MDB 之间实现通信协议,使用数据存储来建模消息队列。
看这个:
http://www.datadisk.co.uk/html_docs/ejb/ejb3_mdb.htm
它说Client-acknowledgeMDB不支持in模式。
Client-acknowledge