【问题标题】:JMS - CorrelationID vs ReplyToJMS - CorrelationID 与 ReplyTo
【发布时间】:2019-10-21 17:03:27
【问题描述】:

我正在使用 Spring Framework 中的 JmsTemplate 通过 JMS 进行集成。我想对外部系统执行同步(即阻塞)调用。我读过 为了做到这一点,我应该使用 CorrelationID。 JMS specification 说:

客户端可以使用 JMSCorrelationID 标头字段来链接一条消息 和另外一个。一个典型的用途是将响应消息与其 请求消息。

所以它清楚地建议使用 CorrelationID 请求/回复模式。

我还发现JmsTemplate 具有旨在实现类似目标的sendAndReceive 方法。 sendAndReceive 内部使用doSendAndReceive,根据javadoc

向给定的目标发送请求消息并阻塞,直到 已在动态创建的临时队列中收到回复。

现在我真的很困惑。 CorrelationID 标头是否与 ReplyTo 标头有共同之处。这两种实现同步调用的方式不同吗?或者也许两者应该一起使用?用简单的英语进行简单的说明会非常受欢迎。

【问题讨论】:

    标签: java spring jms spring-integration


    【解决方案1】:

    它们并不真正相关。如果您为每个请求使用临时回复队列,则不需要correlationId。如果您使用不同的请求/回复队列,那么您需要一些东西来将回复与其请求相关联;因此correlationId。

    Spring Integration's outbound gateway 支持这两种方法并为您处理相关性(无论使用哪种技术,调用线程都会阻塞,直到收到回复)。

    【讨论】:

      猜你喜欢
      • 2023-03-16
      • 2012-02-09
      • 2018-09-14
      • 2018-07-18
      • 1970-01-01
      • 1970-01-01
      • 2015-12-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多