与Java EE和Camel的轻量级集成
Enterprise Java具有不同的風(fēng)格和觀點。 從簡單的平臺技術(shù)開始,即眾所周知的Java EE,再到不同的框架和集成方面,最后是涉及以數(shù)據(jù)為中心的用戶界面或特定可視化效果的用例。 Java EE本身無法解決的最突出的問題是“集成”。 有許多來自知名供應(yīng)商的產(chǎn)品,它們可以解決各種集成問題并承諾提供完整的解決方案。 作為開發(fā)人員,您不時需要的只是一個可行的解決方案。 對于系統(tǒng)集成而言,這是Java EE開發(fā)人員的終極“入門資源”。
一點整合理論
集成挑戰(zhàn)并不是什么新鮮事物。 由于存在不同類型的系統(tǒng),并且需要將其數(shù)據(jù)組合到另一個系統(tǒng)中,因此這一直是中心主題。 Gregor Hohpe和Bobby Woolf開始收集用于解決客戶集成問題的一組基本模式。 這些企業(yè)集成模式 (EIP)可以被視為集成的圣經(jīng)。 它嘗試通過定義65種集成模式來找到有關(guān)異步消息傳遞體系結(jié)構(gòu)的通用詞匯表和知識體系。 Forrester將其稱為“ EAI的核心語言”。
什么是Apache Camel?
Apache Camel為您提供了EIP的接口,基礎(chǔ)對象,通常需要的實現(xiàn),調(diào)試工具,配置系統(tǒng)以及許多其他幫助器,當(dāng)您要實施解決方案以遵循EIP時,將為您節(jié)省大量時間。 這是一個完整的生產(chǎn)就緒框架。 但這并不能止于最初定義的65個模式 。 它擴展了150多個現(xiàn)成的組件 ,可解決端點或系統(tǒng)或技術(shù)集成方面的各種問題。 在較高的層次上,Camel由CamelContext組成,其中包含Component實例的集合。 組件本質(zhì)上是Endpoint實例的工廠。 您可以在Java代碼或IoC容器(例如Spring,Guice或CDI)中顯式配置Component實例,也可以使用URI自動發(fā)現(xiàn)它們。
Java EE開發(fā)人員為什么要關(guān)心?
企業(yè)項目要求我們這樣做。 處理各種系統(tǒng)集成一直是一個具有挑戰(zhàn)性的話題。 您可以通過使用消息傳遞系統(tǒng)選擇復(fù)雜的道路,并將其連接到您的應(yīng)用程序中,然后自己實現(xiàn)一切,或者通過使用不同的產(chǎn)品走上繁重的道路。 從那時起,我一直是更實用的解決方案的粉絲。 這就是Camel的實際含義:相對輕巧,易于引導(dǎo),并附帶大量預(yù)構(gòu)建的集成組件,使開發(fā)人員可以專注于解決其背后的業(yè)務(wù)需求。 無需學(xué)習(xí)新的API或工具。 Camel帶有基于Java的Fluent API , Spring或Blueprint XML Configuration文件 ,甚至還有Scala DSL 。 因此,無論您是從哪一個基地跳下來的,您總會發(fā)現(xiàn)一些您已經(jīng)知道的東西。
如何開始?
我懂了嗎 想要試一試? 這也很容易。 根據(jù)您使用的框架和平臺,您有不同的方式。 回顧帖子標(biāo)題,本文將重點介紹Java EE。
因此,您可以做的第一件事就是自行引導(dǎo)駱駝。 您需要的只是核心駱駝依賴關(guān)系和cdi-camel依賴關(guān)系。 設(shè)置一個普通的Java EE 7 maven項目并添加這兩個項目已足夠。
<dependency><groupId>org.apache.camel</groupId><artifactId>camel-core</artifactId><version>${camel.version}</version> </dependency> <dependency><groupId>org.apache.camel</groupId><artifactId>camel-cdi</artifactId><version>${camel.version}</version> </dependency>接下來需要做的是找到一個注入第一個CamelContext的地方。
@InjectCdiCamelContext context;注入所有內(nèi)容后,您可以開始向其中添加路由。 在GitHub上的CamelEE7項目中可以找到更完整的示例。 只需叉子就可以了。 這將在隨機的Java EE應(yīng)用程序服務(wù)器上工作。 如果您已經(jīng)在使用WildFly ,則還可以充分利用WildFly-Camel子系統(tǒng) 。
WildFly駱駝子系統(tǒng)
wildfly-camel的策略是,用戶可以在WildFly已經(jīng)支持的部署中“僅使用”駱駝核心/組件API。 換句話說,Camel應(yīng)該在標(biāo)準(zhǔn)Java EE部署中“正常工作”。 二進制文件由平臺提供。 部署無需擔(dān)心模塊/接線細節(jié)。
定義和部署駱駝上下文可以以不同的方式完成。 您可以在standalone-camel.xml服務(wù)器配置中直接定義上下文,也可以將其作為Web應(yīng)用程序的一部分部署為帶有預(yù)定義-camel-context.xml文件后綴的單個XML文件,也可以作為另一個WildFly支持的一部分進行部署部署為META-INF / jboss-camel-context.xml文件。
WildFly Camel測試套件使用WildFly Arquillian管理的容器。 這可以連接到已經(jīng)運行的WildFly實例,或者在需要時啟動獨立服務(wù)器實例。 已經(jīng)實現(xiàn)了許多測試增強器,使您可以將這些WildFly Camel特定類型注入Arquillian測試用例中。 您可以將CamelContextFactory或CamelContextRegistry注入為@ArquillianResource。
如果要開始使用它,可以更詳細地看我的博客文章 。
尋找例子
如果您很興奮,并且一切都準(zhǔn)備就緒并且可以運行,那么現(xiàn)在該深入探討一些示例了。 首先要看的是發(fā)行版中的示例目錄 。 有一個您可能需要的所有示例。
最重要的用例之一是與ActiveMQ的緊密集成。 并假設(shè)您有一堆JMS消息需要轉(zhuǎn)換為存儲在文件系統(tǒng)中的文件:這是一項完美的Camel作業(yè)。 您需要配置ActiveMQ組件 ,而不是上面所看到的,它還允許使用Apache ActiveMQ將消息發(fā)送到JMS隊列或主題,或者從JMS隊列或主題使用消息。
以下代碼向您展示了如何將JMS消息從test.queue隊列轉(zhuǎn)換為文件組件,該文件組件將使用它們并將它們存儲到磁盤。
想像一下自己做。 需要更多復(fù)雜的示例嗎? 與Twitter集成? 還是其他不同的技術(shù)? 有很多示例可供選擇。 可能是駱駝最令人興奮的方面之一。 它輕巧,穩(wěn)定,并且已經(jīng)存在多年了。 確保還遵循郵件列表和論壇 。
翻譯自: https://www.javacodegeeks.com/2014/12/lightweight-integration-with-java-ee-and-camel.html
總結(jié)
以上是生活随笔為你收集整理的与Java EE和Camel的轻量级集成的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ddos现在还有用吗(ddos受影响吗)
- 下一篇: Java持久性锁定初学者指南