javascript
Spring Integration关键案例与现实生活场景
這篇文章將總結Spring Integration(SI)的重要要點以及消息傳遞集成模式。 對于每個關鍵提示,我都會根據我的經驗添加一個真實的示例。
分離器
一個。 它能做什么?
拆分器實際上是一種模式,它在某一點接收一條消息并將其拆分為多個。
b。 為什么對我有好處?
當您要將內容拆分為多個部分時,可以使用“拆分器”。 每個部分將異步處理內容。
C。 現實生活中的例子
在交易系統中,您可以進行交易請求。 該請求假定要執行以下幾個步驟:(針對提供者執行該請求,將其記錄在DB中,向客戶端發送通知)
使用Splitter,您可以一次完成所有操作。
d。 SI示例:
<int:splitter id="tradeSplitter" input-channel="tradeSplitterInputChannel" output-channel="outPutChannel">路由器
一個。 它能做什么?
路由器是一種機制,當在某一點以基于內容的標準接收消息時,它將分派到特定的目的地。
b。 為什么對我有好處?
當您實際有不同的消息輸入需要根據其內容進行不同的處理時,路由器非常方便。
C。 現實生活中的例子
因此,您的基礎結構中具有通知功能。 每個客戶選擇的通知方式有所不同(電子郵件,短信,傳真,Web服務等)。 通知請求被發送到客戶端,并且基于請求內容,路由器將選擇將請求處理到哪個組件:EmailService,SmscService,FaxService等。
d。 SI示例:
router id="notificationsRouter" input-channel="notificationInputChannel"聚合器
一個。 它能做什么?
聚合器角色是等待一組相關消息。 在檢索到所有預期的消息之后,它將能夠合并它們并發送單個結果。 聚合器能夠通過組相關性ID同時處理不同的組消息。
b。 為什么對我有好處?
通常,聚合器與拆分器一起工作。 將請求并行拆分到多個目標之后,您可能需要匯總所有目標結果并將最終結果作為輸出發送。
C。 現實生活中的例子
在交易系統中,您從不同的提供商處獲得不同的價格。 通常在所有提供商中選擇最優惠的價格。 匯總器將能夠匯總所有價格并發回最優惠的價格。
d。 SI示例:
<int:aggregator input-channel="bestPriceAgg" output-channel="bestPriceChannel" send-partial-result-on-expiry="true"> </int:aggregator>過濾
一個。 它能做什么?
簡而言之:“您想收到此消息嗎?”
b。 為什么對我有好處?
您的組件可能會收到不同的消息。 您可以根據消息有效負載過濾消息,而不是處理不必要的消息(在EJB世界中,它與消息驅動的Bean選擇器非常相似)。
C。 現實生活中的例子:
在交易系統世界中,您可以選擇是否包含最終價格的傭金。 您的職責是僅向希望的客戶增加傭金。 通過過濾器的該組件將僅接收基于傭金的價格。
d。 SI示例:
<filter input-channel="commisionsChannel" ref="selector" output-channel="output"/>變壓器
一個。 它能做什么?
轉換器可以接收消息并將其有效載荷從一種類型轉換為另一種類型。
b。 為什么對我有好處?
您可能已根據目的地將消息格式從一種轉換為另一種。
b。 為什么對我有好處?
很多時候,我們以一種格式接收輸入,然后需要在添加/修改/刪除有效載荷內容之后將其解析或轉換為其他格式(例如,從XML轉換為String,反之亦然)。
C。 現實生活中的例子
因此,您有一個訂購請求。 該請求需要以特定格式放置在數據庫中,之后,需要以xml格式發送給客戶端。 您可以轉換有效載荷以適合您的目的地需求。
d。 SI示例:
<object-to-string-transformer input-channel="in" output-channel="out"/> SI中還有其他組件。 那些是最受歡迎的。
翻譯自: https://www.javacodegeeks.com/2013/05/spring-integration-key-notes-with-real-life-scenarios.html
總結
以上是生活随笔為你收集整理的Spring Integration关键案例与现实生活场景的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 华为云ddos防御(华为云 ddos)
- 下一篇: linux查看网卡信息 命令(linux