2015-11-09 26 views
0

我試圖在春季集成中使用出站網關時在JMS標題中發送回覆Q詳細信息。我瞭解到JIRA#INT-97中的增強功能會將彈簧消息標題複製到JMS標頭,然後將其發送到JMS目標。春季集成 - 將郵件標題複製到JMS消息

在將消息發送到出站網關之前,請按如下所示設置消息標題。 message.getHeader()。setAttribute(JmsTargetAdapter.JMS_REPLY_TO,myReplyDestination);

但我無法在任何SI罐中找到JmsTargetAdapter類。

任何人都可以幫我拿出有這個類的jar嗎?

另外,我的下面的理解是否正確?

  1. 豐富與具有一個MQQUEUE對象JMSReplyTo屬性(我將消息發送到MQ)
  2. 後使用站網關的消息(默認情況下,該JMS頭將與SI所附您的消息報頭頭)

編輯:

我有源系統和目標系統,其中源發送請求到一個MQ代理例如:MQBroker 1和目的地發送回的回覆MQBroker 2。兩經紀人通過中間件層互連。

我需要在目標的請求標頭中傳遞迴復Q和Q管理器的詳細信息以回覆回覆。但答覆Q細節駐留在代理2中,而出站網關配置將具有代理1配置。

如何實現這與出站網關?這可能嗎?

回答

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是代表你的供應商的隊列對象<bean/>。第二個標題將設置JMSCorrelationId。 (或者你可以使用你自己的關聯機制)。

JMSCorrelationID的回覆將在標題jms_correlationId

只要服務器回顯相同的相關ID,您就可以將回復與請求進行匹配;無論是在你自己的代碼中,還是使用聚合器。

+0

我已經配置了駐留在同一個MQ集線器中的回覆目標屬性,但發出回覆的系統應將其發佈到diff MQ集線器。中間件連接在兩個MQ集線器之間。不知道如何實現這一點。 – swathy

+0

不知道如何將答覆Q和Q經理的詳細信息發送到目標系統 – swathy

+0

我使用一種解決方案編輯了我的答案。 –