什么時候應該使用 Apache Camel?


什么時候應該使用 Apache Camel?

前幾天有人問了我一個問題。他們聽說過 Apache Camel,但不確定是否應該使用它。這個人問我“什么時候應該使用 Apache Camel?”。多么好的問題啊!所以我想總結一下我所知道的:什么時候應該使用 Camel?什么時候你應該使用它呢?以及人們和公司如何在現實世界中使用 Apache Camel?

 

Apache Camel 是一個 Java 集成框架。它最適用於您希望從文件或應用程序中獲取數據、對其進行處理並將其與其他數據組合,然后將其移動到另一個應用程序的情況。

 

當您處理需要在系統之間共享的數據時,Apache Camel 是一個不錯的選擇。當您將數據存儲在不同的應用程序中時,就會發生這種情況。例如,人事檔案可能存儲在 HR 系統中,但需要與財務共享才能處理每月工資單。Camel 充當應用程序之間的這種編程粘合劑,用 Java 實現。

您是否想知道是否應該在自己的項目中采用 Apache Camel?繼續閱讀以了解更多信息,以及它適合哪種項目。

什么是阿帕奇駱駝?

Apache Camel是一個用 Java 編寫的集成工具包或框架。

Camel 以一組庫和組件以及一種語言(稱為DSL)的形式出現,用於描述您希望如何在應用程序之間移動數據。您可以將它添加到現有的 Java 應用程序中,也可以在獨立的 Java 應用程序中運行它。

每當您需要從應用程序中提取數據、重新混合、合並並將其路由到其他地方時,您都可以使用 Camel。Camel 通過提供:

  • 一種用於編寫數據流的語言(DSL),在 Camel中稱為路由

  • 一組的patterns (模式)實施的錯誤處理和改造共性的東西,它可以添加到您的駱駝路線

  • 組 300 多個組件,用於連接數百種不同的應用程序和協議

  • 運行您的集成的可嵌入runtime(運行時)(“Camel 上下文”)

Camel 作為一組庫(JAR 文件)分發,並在開源 Apache 許可證下發布,在 Apache 軟件基金會下。

什么時候應該使用 Apache Camel?

我發現當您想要使用 Apache Camel 時,有幾個主要的驅動程序:

                         與駱駝同行

  • 將應用程序集成在一起: Camel 適用於需要在不同協議和應用程序(如文件、電子郵件、API 或 Web 應用程序)之間移動數據的情況。

    當您想要在其 200 多個組件支持的任何一種應用程序和協議之間移動數據時,您可以使用 Apache Camel。Camel 中的組件通常都以類似的方式工作。因此,一旦您了解了如何使用一個組件,您就會發現使用其他組件會更容易。Camel 包含許多不同應用程序的組件,從 Facebook 和 Twitter,到 Salesforce 和 Workday。您還可以編寫自己的自定義組件。

  • 基於模式的開發:許多常見的集成需求——比如支持事務或轉換——通常在代碼中計划和編寫很復雜。但是 Camel 提供了許多這些,並且通常只需輕彈一下開關即可啟用(好吧,只需更改一個變量!)。Camel 為以下內容提供模式和功能:

    • 基於內容路由數據,使用 Camel 的基於內容的路由

    • 處理錯誤、事務和回滾

    • 轉換數據

    • 緩存經常訪問的數據

    • 加密和認證

    這些只是Camel 可以做的一些事情的例子。

    這些要求在 Camel 中變得更容易,因為它以一組模式的形式提供這些功能,稱為企業集成模式(以同名書籍命名)。您可以將這些企業集成模式中的任何一種“現成”,並在您的代碼中使用它們,而不必每次需要這些功能時都編寫自己的解決方案。

    當您需要連接分布式系統時,這種模式工具箱可以使 Camel 成為編寫集成粘合代碼的一種非常高效的方式。

  • 許多集成的一種高級樣式:一旦您了解了基本模式以及如何使用 Camel 組件,您就會發現在 Camel 中制作許多集成變得很容易。

    這是 Camel 的一個優勢:能夠相當快地創建許多集成。如果您正在開發一組集成,並且您希望它們都以類似的方式進行開發,那么 Camel 是理想的選擇。在大型公司中,這可能是非常有吸引力的選擇,因為它有助於選擇一種開發團隊共享和理解的方法。

  • 處理數據,尤其是 Java 對象:由於它是一個 Java 框架,因此特別擅長處理 Java 對象。因此,如果您正在使用可以反序列化為 Java 對象的文件格式(許多文件格式可以轉換為 Java 對象,例如 XML、JSON……),那么 Camel 可以輕松處理。

人們如何在現實世界中使用 Camel?

有哪些現實世界的例子?駱駝在野外如何使用?

這只是我見過或參與過的一小部分項目。在每個項目中,公司都在使用 Camel 來實現某個目標。我還在括號中包含了相關技術:

一個地球儀的插圖,上面有一些駱駝

                                                                                                             駱駝的廣闊世界

  • 處理和路由數據:處理客戶訂單並將它們路由到數據庫(Camel on Spring Boot with ActiveMQ Artemis 和 Qpid Dispatch Router)

  • 處理網絡提交的數據:接收和處理/轉換農業調查表格,然后插入數據庫(Apache Karaf 上的 Camel)

  • 使用消息隊列處理金融交易處理金融交易並將它們路由到正確的部門(Apache Karaf 上的 Camel)

  • 將網關放在 API 前面:實現輕量級 API 網關,該網關對消息進行身份驗證並將其路由到正確的 API(Spring Boot 上的 Apache Camel)

  • 數據分發:輪詢 SaaS 應用程序中 HR 數據的更改,並將更改分發到許多下游應用程序和文件(Kubernetes 上 Spring Boot 上的 Apache Camel)

  • 后端訂單處理:處理汽車訂單和汽車服務請求(Apache Camel on Spring Boot、Kubernetes)

  • 對遺留 API 進行現代化改造:將來自遺留 ERP 系統的數據作為 REST API 公開,以便客戶端可以使用它(Spring Boot 上的 Apache Camel,Kubernetes 上)

  • 臨時數據處理:每天從數據庫中的數據生成銷售報告(Spring Boot 上的 Apache Camel)

通常,Camel 的最佳用例是您擁有要從中使用的數據(例如隊列中的傳入消息,或從 API 獲取數據)以及要將數據發送到的目標。

你什么時候不應該使用它?

那么什么時候不應該使用 Camel 呢?凡事都有時間和地點,我認為 Camel 很棒,但它不能做到這一切:

  • 對於繁重的數據轉換:雖然 Camel 非常擅長連接許多不同的應用程序,但它並不是為繁重的數據轉換和分析而設計的。如果您有一個數據量很大的工作流,您需要對數據進行大量密集的合並和處理——例如批處理或 ETL——那么我認為還有其他工具更適合這項工作。

    但是,Camel 仍然擅長將多個步驟編排成一個流程。因此,您可能仍會考慮使用 Camel 作為數據轉換過程的協調器。

  • 如果您只需要編寫一個集成“流程”..: Camel 相當輕量級,並且在最近的版本(3.x 及更高版本)中變得更加輕量級。但是,如果您只需要它來編寫一個集成,那么學習所有模式和整個 Camel 集成開發方法可能並不值得。如果您只需要編寫一個集成流程,那么您最好自己編寫集成代碼。

  • 如果您在團隊中沒有任何 Java 技能:由於 Camel 是一個 Java 框架,因此需要一些 Java 知識才能使用它。如果您使用基於 XML 的 DSL(語言)來配置它,則不需要太多,但是擁有一些 Java 知識來理解概念仍然有幫助,因為它通常運行在 Java 虛擬機 (JVM) 上。這些知識特別有用,因此您可以在出現問題時進行故障排除:知道如何讀取堆棧跟蹤總是派上用場!

您如何使用 Apache Camel 創建應用程序?

Apache Camel 是免費和開源的。Camel 入門通常涉及創建一個包含 Camel 的新 Java 應用程序,或者將其添加到您現有的 Java 應用程序中。

Camel 可以通過多種不同的方式部署:

  • 嵌入在 Spring Boot 應用程序和微服務中

  • 嵌入 Quarkus 應用程序中,用於無服務器和容器

  • 嵌入在 Apache Tomcat 中

  • 部署到 Apache Karaf,OSGi 容器

  • 部署到 WildFly,Java 應用程序服務器

  • 使用Camel-K在 Kubernetes 上本地運行

  • 作為帶有方法的簡單、獨立的 Java 應用程序main()

首先,您將 Apache Camel 依賴項添加到您的應用程序,創建一個 Camel 上下文,在 Camel 的 DSL(Java 或 XML)中編寫您的集成路由,然后啟動該上下文。

創建和運行簡單的 Camel 應用程序的一個好方法是閱讀我的 Camel 教程,然后查看GitHub 上的Camel 示例存儲庫,其中包含有用的示例應用程序供您學習。

一旦您開發了基於 Camel 的集成應用程序,您就可以將其部署到您的服務器、虛擬機或雲環境中。

使用 Camel 的最終想法

Camel 是一個很棒的集成框架,我真的很喜歡使用它。它特別適用於應用程序集成——這意味着如果您需要在應用程序之間使用、轉換和路由數據,它是很好的。

Apache Camel 在今天的雲時代更加重要,在這個時代,典型企業中的應用程序數量似乎越來越大。

所以我希望您發現本指南很有用,現在您知道何時使用 Apache Camel!當您需要考慮如何集成和處理來自應用程序的數據時,為什么不試試 Camel?


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM