参加考试我刚发现一个在网上查看后无法回答的问题。问题是:
“服务器是否可以使用JMS消息接收请求,准备其响应(例如访问数据库)并再次使用JMS发送回复,我是单个JMS事务的范围?”
我知道我们可以在交易的上下文中发送交易消息或接收消息。我知道我们可以在一个事务中对几个消息发送和接收进行分组,以保护整个交互。但是,JMS设计为异步。所以理论上我需要有一个事务将消息发送到队列,一个事务从队列接收消息。我是对的还是可以为发送和接收进行单一交易?
答案 0 :(得分:2)
是的,事务处理接收器可以在jMS中实现。它们是通过控制通信的确认模式来实现的:如果所有事务操作都成功,收到的消息将被确认给代理,但是失败的情况下不会发生,所以消息可以重新传递。
This article更详细地解释了这一点:
消息生成者和消息使用者都可以使用事务处理 会议。 [...]
使用消息使用者,事务会话控制消息 确认。消费者可以接收多条消息 CLIENT_ACKNOWLEDGE模式。当关联的交易是 提交后,JMS实现会确认收到的所有消息 在关联的交易中。如果事务中止,则为JMS 实现将消息返回到关联的队列或主题。