簡體   English   中英

Servicemix / Camel:如何利用OSGI創建“可插拔”捆綁軟件?

[英]Servicemix/Camel : how to leverage OSGI to create “pluggable” bundles?

場景:我將嘗試與EIP書中的貸款經紀人示例進行類比

  1. 客戶發送報價請求
  2. (貸款經紀人要求信用局提供客戶信用評分)
  3. 貸款經紀人向每個銀行發送報價請求。

問題

  • 在我的情況下,第1點和第2點位於同一駱駝上下文(或osgi包)中
  • 每個銀行都有一個單獨的捆綁包,通過NMR將端點暴露給貸款經紀人捆綁包
  • 貸款經紀人捆綁包事先不知道銀行,因為我們不時與新銀行保持合作

我做了什么

  • 在loan-broker-bundle中創建了一個注冊表類和bankDescriptor接口
  • 每個銀行捆綁包在啟動時都會調用注冊表,以添加其bankDescriptor(spring init),以告知貸款經紀人調用哪個端點以獲取報價。
  • 貸款經紀人捆綁包主路由使用接收方列表(處理器通過詢問注冊方來設置目標端點)來路由報價請求

問題

希望我的描述足夠清楚,您可以看到這是一個非常簡單的實現。 有什么限制? 如何將這個注冊信息轉換為osgi服務?

我基於SpringDM為客戶開發了這樣的解決方案。 有關如何執行此操作的完整說明,請訪問http://www.jakubkorab.net/2012/05/system-integrations-as-plugins-using-camel-and-servicemix.html網址https://www.jakubkorab.net/。 //github.com/FuseByExample/smx-application-plugins

希望能有所幫助。

在OSGi中,有一個強大的注冊表可供您使用:OSGi服務注冊表。 因此,我的建議是稍有不同。 為報價請求定義服務接口,並將其存儲在api捆綁包中。 然后,讓每個銀行實現此接口,並將實現作為OSGi服務發布。

然后,貸款經紀人捆綁包可以在OSGi服務注冊表中列出所有OSGi服務,並調用每個服務以獲得報價。 藍圖中有一個不錯的標記,您可以使用該標記將列表注入到List的bean屬性中。 Spring DM也許有類似的東西。

Camel當前無法調用所有類型的OSGi服務。 我們討論了一個新的osgi服務組件,該組件可以做到這一點。 因此,我們可能很快就會有解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM