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