2016-10-01 136 views
1

如果我有一個像的InOut路線,如何處理頭在Apache的駱駝

from("activemq:queue:MY_QUEUE") 
     .process(this.processor1) 
     .to("ahc:http:\\abc.com/v1/post/id=123") 
     .process(this.processor2); 

我如何可以確保只有特定的HTTP報頭(例如,接受授權,內容類型)被傳遞到AHC組件而JMS頭(JMSReplyTo)傳播直到路由結束?

回答

1

當你處理你的處理器1,交換隻設置了所有必需的頭/身體不要「exchange.getIn()......」但對「exchange.getOut()。」

更多細節可文檔 http://camel.apache.org/using-getin-or-getout-methods-on-exchange.html

+0

我如何傳播從處理器1的報頭字段(或一些數據),以在processor2發現? – joshu

+1

來自處理器1的exchange.out是在下一個處理器中的交換。因此,在處理器1中設置標題。另外我相信,標題會一直傳遞到路徑的末尾,除非您明確地刪除它們。如果需要在處理器之間發送數據,還可以在交換中設置屬性。 –

+0

在一般性交換頭是不是對自定義數據交換(即使我們能以這種方式使用它們),但大多爲協議相關PARAMS如HTTP方法/ URI/SFTP路徑等 對不同的部件之間傳輸自己的數據(包括處理器)您需要使用交換屬性。它們與一般交換(而不是進出消息)相關,並保持不動,直到你不會刪除它們。幾乎所有(如果不是全部的話)路由處理器(如分離/循環/多播)都在保存它們 –