2015-12-25 87 views
1

我想用twitter連接器編寫測試應用程序。 流量是下一個:拆分 - 轉換 - 聚合

  1. 加載轉發;
  2. 在這裏,我收到了轉發列表,我想逐個轉換它們。我使用爲每個,但更早我用收集分流器
  3. 我如何理解,除了foreach塊之外,我應該已經轉換了有效載荷,但是在這個地方我得到的結果和開頭一樣。

這是我的流量:

<flow name="twits"> 
    <http:listener config-ref="HTTP_Listener_Configuration" path="/twits" doc:name="HTTP"/> 
    <twitter:get-retweets statusId="111111111111" config-ref="Twitter" doc:name="Twitter"/> 
    <foreach> 
     <transformer ref="ReTwitTransformer"/> 
    </foreach> 
    <json:object-to-json-transformer doc:name="Object to JSON"/> 
</flow> 

所以問題是在3步驟,我無法設置變換的數據到消息有效載荷。我已經嘗試使用set-payload但沒有成功。

回答

1

Foreach scope在處理每個元素後返回原始消息。你的轉換不會被保留。

在這種情況下,您可能會嘗試以前嘗試使用Batch Processing模塊(EE)或僅使用Collection Splitter(CE)。

此外,我注意到你正在使用HTTP偵聽器來啓動。如果實際上需要將已轉換的轉發信息作爲HTTP響應回收,則需要添加更多信息:

如果使用批處理模塊,則需要將其與Request Reply路由器配對以便同步獲取成功記錄的集合。只需爲請求添加一個Batch Execute,併爲響應添加一個VM入站端點。然後,只需將一個VM出站端點置於批量完成步驟。

如果您使用收集分離器,則在轉換髮生後您將需要Collection Aggregator。你可能要等到聚合完成後再做對象到json轉換器。

+0

嗨,謝謝你的回答。還有一個關於Collection Splitter的問題。當我使用它時,出現一些錯誤,唯一幫助我的是塊。那麼我應該在流程結束時使用和collection aggregator嗎? –

+0

我不認爲異步是必要的。錯誤是什麼? –

+1

哦,你是完全正確的,它沒有異步工作,但與分離器聚合器的組合。非常感謝 :) –