令人印象深刻的第一個Apache Camel版本

為了準備下周的CamelOne會議,我花了一些時間回顧一下Apache Camel項目的歷史。 因此,除其他外,我了解了Apache Camel的第一個正式1.0版本 。
Apache Camel 1.0 – 5年前

我看的越多,這個版本的事實給我留下了深刻的印象。 現在您必須考慮這是5年前完成的,在此版本中,駱駝創始人已經在項目的DNA中

  • Java DSL
  • XML DSL(使用Spring)
  • 路線圖上的OSGi
  • 660kb的駱駝核心JAR
  • 18個外部組件(+駱駝核心組件)
  • 2個工作實例
  • 完整的網站,包括文檔,包括常見問題解答
  • 項目徽標和包裝盒
  • Camel Maven插件可輕松運行Camel及其示例
  • 測試套件

以下是此版本的tar球分布的屏幕截圖:

Camel 1.0發行版(在pom.xml中提示OSGi野心)

當您聽到詹姆斯談論過去以及他如何創造駱駝時,他的野心就是駱駝不應該束縛您。 如果要使用Java而不是XML,則可以。 如果您使用的是Spring XML旅行車,那就很好。 如果您對Groovy感興趣,那么很好,如果您想使用Ruby,那就去吧(在Camel 1.3中添加了受支持的Ruby)。

讓我們看一下DSL的通道。 Apache Camel最有可能是第一個在其第一版中即開即用地提供多種語言DSL的集成項目。 它只是項目的DNA,而正是IMHO Apache Camel在其他項目中脫穎而出的原因–多元而充滿活力的社區以及Camel項目的DNA都“不適合所有人”。

因此,讓我們看一下使用Java DSL的示例。 如今,使用最新的Camel版本(例如2.9.2)的人們應該立即熟悉DSL –某些東西從一開始就起作用!

Camel 1.0中的Java DSL

還有XML DSL的樣本,您也可以在源代碼中看到該樣本。

Camel 1.0中的XML DSL

在此第一個版本中,我們還具有出色的測試工具包,例如,在下面的屏幕截圖中注意到模擬的用法和設置期望。 從第一天開始測試駱駝就變得容易了。 是的,這是駱駝項目的DNA。

駱駝1.0中已包含駱駝測試套件

并注意上述單元測試中對Apache Camel創始人的引用。

  • 詹姆斯·斯特拉坎
  • 羅伯·戴維斯
  • 希拉姆·奇里諾
  • 紀堯姆·諾德(Guillaume Nodet)

謝謝你們創造了這個很棒的項目。 令人印象深刻的第一版,你們5年前就做了。

我將通過運行Apache Camel 1.0發行版中的camel-example-spring來結束本博客。
$ cd的例子
$ cd駱駝示例春天 $ mvn編譯 $ mvn駱駝:運行

現在,您應該有耐心了,因為Maven正在下載5年之久的古老JAR。 所以需要一段時間:)

駱駝1.0示例運行

上面的屏幕截圖顯示了運行的Camel 1.0示例。 此示例通過使用來自JMS隊列的消息并將其寫入文件開始。 因此,我們需要與jconsole連接,以發送消息。 我已經突出顯示了在jconsole中使用的服務URL。

jconsole發送消息– Camel 1.0搖滾

在jconsole中,我們展開樹并找到測試隊列,并使用文本“ Camel 1.0 rocks”調用sendTextMessage操作。

在上面的第二張屏幕截圖中,您可能會在控制臺的最后一行中看到“ Received Exchange”。 這是Camel記錄的日志,因為示例使用了此博客頂部的屏幕快照中顯示的以下路線。

然后,我們還可以看到文件也已寫入測試目錄,在這里我們可以看到文件名是消息ID,文件內容是從jconsole發送的內容:

這是5年前,所以讓我們快進到今天。
Apache Camel的最新版本是2.9.2,因此讓我們遷移舊示例以使用此版本。 為此,您需要:

  • 調整pom.xml以使用Camel 2.9.2,并且camel-activemq組件已從Camel移到ActiveMQ,因此您需要包括它。 對于日志記錄,我們現在使用slf4j。 修改后的pom.xml如下所示
將示例從Camel 1.0升級到2.9.2,調整pom.xml文件
  • 在Spring XML文件中,您需要更改Camel的名稱空間,因為當Camel畢業成為Apache頂級項目時,該名稱空間已從activemq遷移到camel。 我們也升級到在XSD中使用Spring 3.0。 現在,activemq組件來自ActiveMQ,而不是Camel。 現在,packages屬性是一個xml標記,因此您需要在<camelContext>中使用<packlage>。 更新后的文件如下所示:
將Spring XML從Camel 1.0升級到Camel 2.9.2

好的,我們現在可以開始了。

無需更改Java源代碼!!!!

該示例從Camel 1.0遷移到2.9.2,而無需更改Java代碼!!!!

就像在我們使用JConsole發送文本消息之前一樣。

我必須說James及其創始人在Camel 1.0版本中實現了這一目標,示例中的DSL與今天的Camel版本完全兼容。

確實是一個非常令人印象深刻的第一版。 駱駝開了一個很好的開端,從那時起,這個項目就變得越來越強大。

參考: 在我們的JCG合作伙伴 Claus Ibsen在Apache Camel博客的Claus Ibsen 上看到令人印象深刻的第一個Apache Camel版本 。


翻譯自: https://www.javacodegeeks.com/2012/06/impressive-first-apache-camel-release.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/372554.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/372554.shtml
英文地址,請注明出處:http://en.pswp.cn/news/372554.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Linux禁用user01賬戶,Linux?管理用戶?useradd

創建用戶、設置密碼、修改用戶、刪除用戶&#xff1a;useradd testuser 創建用戶testuseruseradd [選項]useradd 命令選項-u uid:指定新用戶的uid,默認用當前最大uid加1-g group:指定新用戶所在的組(私有組),該組必須存在-G group:指定新用戶的附加組-d dir:指定新用戶的自家目…

css小細節

1. 文字居中顯示 水平居中&#xff1a; text-align: center; 垂直居中&#xff1a; line-height: (height); 2.子元素相對于父元素的絕對布局。 父元素一定要 position: relative/absolute/fixed; 默認position 是static 轉載于:https://www.cnblogs.com/zcancandice/p/5…

為什么在2012/2013年我將在新的Enterprise Java項目中繼續使用Spring *和* Java EE

自從我擔任技術決策職務以來已經過去了一年多&#xff0c;很高興看到我仍然與之保持著完美的和諧。 幾個月前&#xff0c;我在KaiWhner的一個不錯的博客中寫了一個有關JEE與Spring的答案。 如果觀點沒有不同&#xff0c;那么討論的附加值在哪里&#xff1f; 我確實同意Kai的許多…

linux ubuntu 五筆輸入法,ubuntu下安裝fcitx五筆輸入法

安裝fcitx輸入法sudo add-apt-repository ppa:fcitx-team/stable #添加安裝源&#xff0c;apt-get 添加&#xff0c;nightly源也可以sudo apt-get update #更新源&#xff0c;否則無法安裝fcit…

淺談Windows下SVN在Android Studio中的配置、基本使用及解除關聯

看到網上很多關于svn環境配置和關聯Android-Studio的很多博文&#xff0c;發現很零散&#xff0c;想集大家所長整理一下&#xff1a; 在AndroidStudio中開發版本控制中&#xff0c;除了Git就是SVN&#xff0c;和Eclipse不同Android Studio沒有提供單獨的插件&#xff0c;只能和…

四. 基于環視Camera的BEV感知算法-BEVDepth

目錄 前言0. 簡述1. 算法動機&開創性思路2. 主體結構3. 損失函數4. 性能對比總結下載鏈接參考 前言 自動駕駛之心推出的《國內首個BVE感知全棧系列學習教程》&#xff0c;鏈接。記錄下個人學習筆記&#xff0c;僅供自己參考 本次課程我們來學習下課程第四章——基于環視Cam…

【騰訊Bugly干貨分享】Android Patch 方案與持續交付

本文來自于騰訊bugly開發者社區&#xff0c;非經作者同意&#xff0c;請勿轉載&#xff0c;原文地址&#xff1a;http://dev.qq.com/topic/57a31921ac3a1fb613dd40f3 Android 不僅系統版本眾多&#xff0c;機型眾多&#xff0c;而且各個市場都各有各的政策和審核速度&#xff0…

App Engine中的Google Services身份驗證,第1部分

這篇文章將說明如何構建一個簡單的Google App Engine&#xff08;GAE&#xff09;Java應用程序&#xff0c;該應用程序可針對Google進行身份驗證&#xff0c;并利用Google的OAuth授權訪問Google的API服務&#xff08;例如Google Docs&#xff09;。 此外&#xff0c;在Google已…

c語言中空格的作用是什么,C語言中空格和\0的區別

\0 為字符串結束符&#xff0c;比如說&#xff1a;abcd (空格)cdefg&#xff1b;存入數組時&#xff0c;空格作為一個字符占有一個字節的空間&#xff0c;我們可以把它看著一個字符去處理。而“\0 ” 則是這個字符串的結束標識符&#xff0c;也占有一個字節的空間&#xff0c;表…

C++11 新特性:Lambda 表達式

參考文章&#xff1a;https://blogs.oracle.com/pcarlini/entry/c_1x_tidbits_lambda_expressions 或許&#xff0c;Lambda 表達式算得上是 C 11 新增特性中最激動人心的一個。這個全新的特性聽起來很深奧&#xff0c;但卻是很多其他語言早已提供&#xff08;比如 C#&#xff0…

山東自考c語言程序設計停考了嗎,2018山東自考停考專業有哪些

自考每年都會停考一批的專業以適應社會的發展&#xff0c;今年山東自考的停考專業有哪些&#xff1f;本文由學梯網小編整理發布&#xff0c;僅供參考。2018年山東自考停考專業有什么根據山東省教育考試院發布的《關于山東自學考試停考國際貿易(專科)等19個專業的通知》知悉&…

公開調用私有Java方法?

我們是Java開發人員&#xff0c;在Java中已知4種訪問修飾符&#xff1a;私有&#xff0c;受保護&#xff0c;公共和包。 好吧&#xff0c;除了私有外&#xff0c;最后三個可以通過繼承&#xff0c;相同的包或實例從類外部調用。 現在&#xff0c;常見的問題是&#xff0c;可以公…

Java 異常處理 try catch finally throws throw 的使用和解讀(一)

最近的一個內部表決系統開發過程中&#xff0c;發現對異常處理還存在一些模棱兩可的地方&#xff0c;所以想著整理一下主要涉及到&#xff1a;1.try catch finally throws throw 的使用和解讀2.自定義異常的使用3.常見的運行異常 /** * Java 異常處理 * try catch finally thr…

C語言字符像素,返回字符串寬度 (以像素為單位)

[c]代碼庫#include #include #include #include int main(void){/* request auto detection */int gdriver DETECT, gmode, errorcode;int x 0, y 0;int i;char msg[80];/* initialize graphics and local variables */initgraph(&gdriver, &gmode, "");/…

Spring動態物業管理

靜態和動態屬性對于運營管理以及在生產級別更改系統行為都非常重要。 特別地&#xff0c;動態參數減少了服務中斷。 本文展示了如何使用Quartz在Spring Applications中管理動態屬性。 有關使用 Spring和Quartz集成提供“ 使用Spring和Quartz的多作業計劃服務”的文章。 讓我們看…

[BZOJ1005][HNOI2008]明明的煩惱

[BZOJ1005][HNOI2008]明明的煩惱 試題描述 自從明明學了樹的結構,就對奇怪的樹產生了興趣......給出標號為1到N的點,以及某些點最終的度數,允許在任意兩點間連線,可產生多少棵度數滿足要求的樹? 輸入 第一行為N(0 < N < 1000),接下來N行,第i1行給出第i個節點的度數Di,如…

android調用so封裝jni,GitHub - Michelle0716/AndroidJniDemo1: 安卓對c進行so文件打包,并以jni的形式進行調用...

AndroidJniDemo1安卓對c進行so文件打包&#xff0c;并以jni的形式進行調用項目中的部分app &#xff1a; 編譯so文件jniDemo: 添加運行so文件開發環境&#xff1a;android studio 3.0.1(As3.0以上創建項目&#xff0c;選擇支持c/c,項目會自動生成需要的配置&#xff0c;不需要在…

ADF任務流:頁面片段的托管bean范圍

介紹 當我們使用ADF任務流并需要實現一些特定于流的業務邏輯或存儲一些與該流相關的信息時&#xff0c;我們通常使用pageFlowScope托管bean。 而且&#xff0c;當我們需要為流的活動&#xff08;頁面或頁面片段&#xff09;提供服務時&#xff0c;我們將較短的作用域用于此類托…

Linux平臺下:塊設備、裸設備、ASMlib、Udev相關關系

對磁盤設備&#xff08;裸分區&#xff09;的訪問方式分為兩種&#xff1a;1.字符方式訪問&#xff08;裸設備&#xff09;&#xff1b;2.塊方式訪問 Solaris平臺 : 在Solaris平臺下&#xff0c;系統同時提供對磁盤設備的字符、塊方式訪問。每個磁盤有兩個設備文件名: 一個在/d…

Error0---local variable S is accessed from within inner class; needs to be declared final

local variable S is accessed from within inner class; needs to be declared final在內部類當中不能引用本地變量s,需要被聲明為常量轉載于:https://www.cnblogs.com/Cherrylalala/p/6636642.html