【问题标题】:Can I receive a message, prepare its response and send a message in a context of a single JMS transaction?我可以在单个 JMS 事务的上下文中接收消息、准备响应并发送消息吗?
【发布时间】:2016-01-10 21:47:54
【问题描述】:

在学习考试时,我刚刚在网上查找了一个我也无法回答的问题。问题是:

“服务器是否可以使用 JMS 消息接收请求,准备其响应(例如访问数据库)并再次使用 JMS 发送回复,在单个 JMS 事务的范围内?”

我知道我们可以在交易的上下文中发送交易消息或接收消息。我知道我们可以在一个事务中将多个消息发送和接收分组,从而保护整个交互。但是,JMS 被设计为异步的。所以理论上我需要有一个事务来将消息发送到队列和一个事务来接收来自队列的消息。我是对的还是可以进行单次发送和接收交易?

【问题讨论】:

    标签: java transactions jms


    【解决方案1】:

    是的,事务接收器可以在jMS中实现。它们是通过控制通信的确认模式来实现的:如果所有事务操作都成功,则接收到的消息将向代理确认,但在失败的情况下不会发生,因此可以重新传递消息。

    This article 更详细地解释了这一点:

    消息生产者和消息消费者都可以使用事务处理 会议。 [...]

    对于消息消费者,事务会话控制消息 确认。消费者可以接收多条消息,就像 CLIENT_ACKNOWLEDGE 模式。当关联交易是 已提交,JMS 实现确认收到的所有消息 在关联交易中。如果事务中止,JMS 实现将消息返回到关联的队列或主题。

    【讨论】:

      猜你喜欢
      • 2018-09-07
      • 2014-12-30
      • 2014-11-05
      • 2022-11-24
      • 2012-04-05
      • 1970-01-01
      • 1970-01-01
      • 2021-07-16
      • 2014-10-12
      相关资源
      最近更新 更多