Mule消息轉(zhuǎn)換

Mule消息轉(zhuǎn)換

Mule官方原文鏈接

為了更好的理解Mule消息處理器的運作,可以對處理前后的消息進行查看吮炕。轉(zhuǎn)換器對消息負載進行轉(zhuǎn)換,即可以是數(shù)據(jù)結構的轉(zhuǎn)換也可以是數(shù)據(jù)格式的轉(zhuǎn)換:從JSON到Java對象访得,Map到CSV或者Java對象到XML龙亲。觀察前后的變化有助于理解Mule是如何對消息內(nèi)容進行操的作:變更,刪除或者添加悍抑,以便在流程圖中進一步對消息進行處理鳄炉。

本文用到了Mule消息結構一文中的應用示例相類似的應用,用來驗看消息通過流程圖中的消息轉(zhuǎn)換組件(DataWeave)時的表現(xiàn)搜骡。在Anypoint Studio中以調(diào)試模式運行該程序拂盯,通過可視化調(diào)試器來查看斷點處的節(jié)點消息中的內(nèi)在結構。

背景

本文通過在Mule的圖形界面Anypoint Studio中運行的示例程序來對細節(jié)進行說明记靡。其中會結合XML配置以及Studio的界面截圖谈竿。閱讀本文前請確保你已熟悉了Mule和Anypoint Studio的界面,并且已經(jīng)閱讀了Mule消息結構一文摸吠,已理解了Mule消息的概念空凸。

通過示例理解Mule消息

為了理解Mule消息,本文使用了將CSV文件轉(zhuǎn)換成Salesforce聯(lián)系人數(shù)據(jù)的示例程序寸痢。

簡言之呀洲,文件節(jié)點從輸入目錄中每隔10秒輪詢新的文件。當發(fā)現(xiàn)新的文件啼止,會讀取其中內(nèi)容并將其傳給消息轉(zhuǎn)換器組件道逗,該組件使用DataWeave代碼對消息負載進行轉(zhuǎn)換。該組件在將CSV的內(nèi)容格式化成集合的同時將CSV文件中的字段(譬如FirstName献烦,LastName等等)映射成Salesforce所需的字段滓窍。每個組映射都會用箭頭連接線顯示對應關系,來幫助用戶可視化的理解映射的邏輯仿荆。在將文件中的內(nèi)容轉(zhuǎn)換到Salesforce可以接收的集合對象后贰您,通過Salesforce連接器推送到你的Salesforce賬號中坏平。通過連接器的配置來指定"操作"為"創(chuàng)建"、"s對象類型"為"聯(lián)系人"锦亦,以指示連接器將數(shù)據(jù)上傳到Salesforce舶替,創(chuàng)建新的聯(lián)系人。

image

消息轉(zhuǎn)換前

正如在Mule消息結構文中所述杠园,消息包含了兩個重要的部分

  • 消息頭部顾瞪,其中包含有屬性

  • 消息的負載,包含了Mule要處理的數(shù)據(jù)

Mue消息對象抛蚁,包含著Mue消息陈醒,也可能包含變量。下面列出了上例中的消息的頭部瞧甩,負載和變量在消息進入轉(zhuǎn)換組件之前的狀態(tài)

為了查看消息的頭部和負載信息钉跷,我們在應用的消息處理器中設置斷點,然后在Studio的調(diào)試模式運行應用肚逸。Studio的可視化調(diào)試器顯示消息的頭部信息爷辙,而位于設計界面的下部的Mule調(diào)試器Console則會顯示消息的負載信息。

更多關于如何查看消息內(nèi)容的說明:可視化調(diào)試器

消息頭部

下圖的Mule消息顯示的是存在于消息頭部中的數(shù)據(jù)(比如元數(shù)據(jù))朦促。這個例子中膝晾,可以看到消息的身份信息,還可以看到是否帶有附件(若帶有附件會以數(shù)組形式呈現(xiàn))务冕。

注意NameMessage Processor,ValueTransform Message的這一項血当。Message Processor 項代表著當前消息在flow中的下一個消息處理器。

image
消息負載

下圖中payload是包含了消息的負載禀忆,或者說包含了Mule應用處理的數(shù)據(jù)臊旭。在消息通過Transform Message組件之前,負載包含了CSV文件油湖,Name是currentFile巍扛,Type是java.io.File

image
屬性

可視化調(diào)試器 在消息進入Transform Message組件時候,還會顯示消息中的所有傳入和傳出數(shù)據(jù)乏德。傳入屬性是與負載相關的元數(shù)據(jù)撤奸,包括文件名、時間戳以及進入的節(jié)點(例子里是MULE_ORIGINATING_ENDPOINT)喊括。傳入屬性是只讀的胧瓜,并且無法通過應用中的消息處理器添加刪除或復制。

image

類似的郑什,傳出屬性顯示了有關于負載的信息府喳,但是可以被應用中的消息處理器刪除或復制。

image
變量

可視化調(diào)試器 顯示了進入Transform Message組件消息的所有的變量或者session變量蘑拯。流程圖中文件節(jié)點在消息中設置了兩個變量钝满,一個是指示Transform Message組件處理后的文件的移動位置兜粘,另一個是指示輪詢目錄請求新數(shù)據(jù)的時間間隔。

image

沒有被設置的Session變量

image

消息轉(zhuǎn)換后

這個應用中的Transform Message組件的任務是將CSV文件中的內(nèi)容轉(zhuǎn)換成Salesforce能夠處理的Java對象弯蚜。并且會將文件中不同字段的值轉(zhuǎn)換到對應的Salesforce中的屬性孔轴,比如將Name字段抓暖到Salesforce的contract屬性。下面的圖中會顯示消息在經(jīng)過該組件后的內(nèi)容碎捺。

消息頭部

消息頭部的內(nèi)容沒有變化

image
消息負載

消息的負載發(fā)生了巨大的變化路鹰!變成了來自CSV文件的聯(lián)系人信息,以一個包含map元素的array list的形式存在收厨。每一個map代表了CSV中的一行晋柱,展開map元素可以看到包含每行記錄對于值的鍵值對。

image
image
屬性

Mule消息處理器不能對傳入屬性進行添加诵叁,刪除或其他操作雁竞。所以傳入屬性沒有發(fā)生變化。

image

組件也沒有對消息的傳出屬性做出任何的修改黎休。

image
變量

Transform Message組件沒有對變量session變量做改動

image
image

更多示例

在消息中設置一個變量

流程圖中的變量轉(zhuǎn)換器在消息中設置了一個minPrice變量浓领,其值是消息的負載。還記得界面的中Message Processor指的是flow中下一個處理組件吧势腮?

<flow>
...
<set-variable doc:name="Variable" value="#[payload]" variableName="minPrice"/>
...
</flow>

進入屬性轉(zhuǎn)換器前

image

進入屬性轉(zhuǎn)換器后

image
設置消息中的屬性

流程圖中的屬性轉(zhuǎn)換器在消息中設置了size屬性,其值是small漫仆。(原文有錯誤)

進入屬性轉(zhuǎn)換器前

image

進入屬性轉(zhuǎn)換器后

image
設置消息的負載
<flow>
...
<set-payload doc:name="change payload" value="Hello, World."/>
...
</flow>

Flow中的負載轉(zhuǎn)換器將消息的負載替換成了字符串:"Hello, World."(原文代碼片段missing)

進入屬性轉(zhuǎn)換器前

image

進入屬性轉(zhuǎn)換器后

image

學習使用MEL表達式可以查看同flow或其他flow中設置的消息屬性和變量捎拯。
查看Mule消息結構一文中的頭部設置和使用屬性與變量

更多內(nèi)容

NEXT STEP: 關于全局元素

關于Studio可視化調(diào)試器

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市盲厌,隨后出現(xiàn)的幾起案子署照,更是在濱河造成了極大的恐慌,老刑警劉巖吗浩,帶你破解...
    沈念sama閱讀 219,490評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件建芙,死亡現(xiàn)場離奇詭異,居然都是意外死亡懂扼,警方通過查閱死者的電腦和手機禁荸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來阀湿,“玉大人赶熟,你說我怎么就攤上這事∠葑欤” “怎么了映砖?”我有些...
    開封第一講書人閱讀 165,830評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長灾挨。 經(jīng)常有香客問我邑退,道長竹宋,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,957評論 1 295
  • 正文 為了忘掉前任地技,我火速辦了婚禮蜈七,結果婚禮上,老公的妹妹穿的比我還像新娘乓土。我一直安慰自己宪潮,他們只是感情好,可當我...
    茶點故事閱讀 67,974評論 6 393
  • 文/花漫 我一把揭開白布趣苏。 她就那樣靜靜地躺著狡相,像睡著了一般。 火紅的嫁衣襯著肌膚如雪食磕。 梳的紋絲不亂的頭發(fā)上尽棕,一...
    開封第一講書人閱讀 51,754評論 1 307
  • 那天,我揣著相機與錄音彬伦,去河邊找鬼滔悉。 笑死,一個胖子當著我的面吹牛单绑,可吹牛的內(nèi)容都是我干的回官。 我是一名探鬼主播,決...
    沈念sama閱讀 40,464評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼搂橙,長吁一口氣:“原來是場噩夢啊……” “哼歉提!你這毒婦竟也來了?” 一聲冷哼從身側響起区转,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤苔巨,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后废离,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體侄泽,經(jīng)...
    沈念sama閱讀 45,847評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,995評論 3 338
  • 正文 我和宋清朗相戀三年蜻韭,在試婚紗的時候發(fā)現(xiàn)自己被綠了悼尾。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,137評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡湘捎,死狀恐怖诀豁,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情窥妇,我是刑警寧澤舷胜,帶...
    沈念sama閱讀 35,819評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響烹骨,放射性物質(zhì)發(fā)生泄漏翻伺。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,482評論 3 331
  • 文/蒙蒙 一沮焕、第九天 我趴在偏房一處隱蔽的房頂上張望吨岭。 院中可真熱鬧,春花似錦峦树、人聲如沸辣辫。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽急灭。三九已至,卻和暖如春谷遂,著一層夾襖步出監(jiān)牢的瞬間葬馋,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評論 1 272
  • 我被黑心中介騙來泰國打工肾扰, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留畴嘶,地道東北人。 一個月前我還...
    沈念sama閱讀 48,409評論 3 373
  • 正文 我出身青樓集晚,卻偏偏與公主長得像窗悯,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子偷拔,可洞房花燭夜當晚...
    茶點故事閱讀 45,086評論 2 355

推薦閱讀更多精彩內(nèi)容