【问题标题】:Spring Integration - copy message headers to JMS MessageSpring Integration - 将消息头复制到 JMS 消息
【发布时间】:2016-02-10 14:20:35
【问题描述】:

在 Spring 集成中使用出站网关时,我试图在 JMS 标头中发送回复 Q 详细信息。我了解到,在 JIRA #INT-97 中进行的增强会将 spring 消息头复制到 JMS 头中,然后再将其发送到 JMS 目的地。

在将消息发送到出站网关之前,将消息头设置如下。 message.getHeader().setAttribute(JmsTargetAdapter.JMS_REPLY_TO, myReplyDestination);

但我无法在任何 SI jar 中找到 JmsTargetAdapter 类。

任何人都可以帮我解决这个类的 jar 吗?

另外,我下面的理解正确吗?

  1. 使用具有 MQQueue 对象的 JMSReplyTo 属性丰富您的消息头(我正在向 MQ 发送消息)
  2. 使用出站网关发布消息(默认情况下,JMS 标头将附加 SI 标头)

编辑:

我有源系统和目标系统,其中源向 MQ 代理发送请求,例如:MQBroker 1,目标将回复发送回 MQBroker 2。这两个代理通过中间件层互连。

我需要在请求标头中传递回复 Q 和 Q Manager 详细信息,以便目的地放回回复。但是回复 Q 详细信息位于 Broker 2 中,而出站网关配置将具有 Broker 1 配置。

如何通过出站网关实现这一点?这可能吗?

【问题讨论】:

    标签: spring-integration spring-jms


    【解决方案1】:

    这是一个非常非常古老的框架预发布版本中的一个非常古老的问题。

    the current documentation about how to use the outbound gateway

    您不需要这样设置标题;在网关上配置reply-destination* 属性之一。

    编辑

    回复您的评论:

    网关无法与两个不同的代理通信。为此,您必须使用出站和入站通道适配器,并进行自己的回复关联。

    为此,您可以使用标题丰富器来设置 jms_replyTo 标题...

    <int:header-enricher>
        <int:header name="jms_replyTo" ref="someReplyDestination" />
        <int:header name="jms_correlationId" expression="headers['id'].toString()" />
    </int:header-enricher>
    

    ...其中someReplyDestinaion 是一个&lt;bean/&gt;,代表您的供应商的队列对象。第二个标头将设置JMSCorrelationId。 (或者您可以使用自己的关联机制)。

    回复中的JMSCorrelationID 将在标题jms_correlationId 中。

    只要服务器回显相同的关联ID,您就可以将回复与请求匹配;可以在您自己的代码中,也可以使用聚合器。

    【讨论】:

    • 我已经配置了一个回复目的地属性,该属性位于同一个 MQ 集线器中,但发出回复的系统应该将其发布到 diff MQ 集线器。中间件连接在两个 MQ 集线器之间。不知道如何实现这一点。
    • 不确定如何将回复 Q 和 Q 管理员详细信息发送到目标系统
    • 如果假设我正在使用出站网关,我不能在源系统发布的 SI 消息中填充 JMS 标头吗?目标系统需要仅作为 JMS 标头一部分的位于其 MQ 集线器中的回复 Q 详细信息。中间件是相互连接的。所以网关配置中的 req 和 res 目标位于同一个代理中
    • 那你无事可做;网关将为您在JMSReplyTo 标头中设置回复目标。它应该“正常工作”。您需要展示您的完整配置并正确描述什么不起作用。不要将配置放在评论中;改为编辑问题。
    • 如果网关从我提供的配置中填充 JMSReplyTo,则目标系统将无法发送回复。我在出站网关中给出的回复目标是 diff,而在 JMS 标头中发送的 JMSReplyTo 属性应该是 diff。这可以实现吗?
    猜你喜欢
    • 2016-06-14
    • 2020-04-30
    • 2019-07-02
    • 1970-01-01
    • 2018-04-19
    • 2017-12-12
    • 1970-01-01
    • 1970-01-01
    • 2017-02-09
    相关资源
    最近更新 更多