精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

針對Java開發者的Apache Camel入門指南

開發 后端
Apache Camel是一個非常實用的規則引擎庫,能夠用來處理來自于不同源的事件和信息。你可以在使用不同的協議比如VM,HTTP,FTP,JMS甚至是文件系統中來傳遞消息,并且讓你的操作邏輯和傳遞邏輯保持分離,這能夠讓你更專注于消息的內容。

Apache Camel是一個非常實用的規則引擎庫,能夠用來處理來自于不同源的事件和信息。你可以在使用不同的協議比如VM,HTTP,FTP,JMS甚至是文件系統中來傳遞消息,并且讓你的操作邏輯和傳遞邏輯保持分離,這能夠讓你更專注于消息的內容。

在這篇文章中,我將提供一個Java語言(非Groovy)的Apache Camel入門演示。

首先創建一個Maven項目的pom.xml。

  1. <?xml version="1.0" encoding="UTF-8"?> 
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" 
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  4. xsi:schemaLocation="  
  5. http://maven.apache.org/POM/4.0.0  
  6. http://maven.apache.org/maven-v4_0_0.xsd"> 
  7.  
  8. <modelVersion>4.0.0</modelVersion> 
  9. <groupId>camel-spring-demo</groupId> 
  10. <artifactId>camel-spring-demo</artifactId> 
  11. <version>1.0-SNAPSHOT</version> 
  12. <packaging>jar</packaging> 
  13.  
  14. <properties> 
  15. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
  16. <camel.version>2.11.1</camel.version> 
  17. </properties> 
  18.  
  19. <dependencies> 
  20. <dependency> 
  21. <groupId>org.apache.camel</groupId> 
  22. <artifactId>camel-core</artifactId> 
  23. <version>${camel.version}</version> 
  24. </dependency> 
  25. <dependency> 
  26. <groupId>org.slf4j</groupId> 
  27. <artifactId>slf4j-simple</artifactId> 
  28. <version>1.7.5</version> 
  29. </dependency> 
  30. </dependencies> 
  31.  
  32. </project> 

在這里我們只用到了camel-core.jar包,實際上它提供了許多你可能用到的實用組件。出于日志記錄的目的,我使用了slf4j-simple來作為日志記錄的實現,從而我們可以從控制臺上看到輸出。

接下來我們只需要構造一個路由類。路由就好比是Camel中怎樣將消息從一端傳遞到另一端的一個指令定義。我們將會創建src/main/java /camelcoredemo/TimerRouteBuilder.java文件,每隔一秒向處理器發送一個消息,簡單打印出來。

  1. package camelcoredemo;  
  2.  
  3. import org.slf4j.*;  
  4. import org.apache.camel.*;  
  5. import org.apache.camel.builder.*;  
  6.  
  7. public class TimerRouteBuilder extends RouteBuilder {  
  8. static Logger LOG = LoggerFactory.getLogger(TimerRouteBuilder.class);  
  9. public void configure() {  
  10. from("timer://timer1?period=1000")  
  11. .process(new Processor() {  
  12. public void process(Exchange msg) {  
  13. LOG.info("Processing {}", msg);  
  14. }  
  15. });  
  16. }  

以上就是這個示例的全部所需,現在編譯運行。

  1. bash> mvn compile  
  2. bash> mvn exec:java -Dexec.mainClass=org.apache.camel.main.Main -Dexec.args='-r camelcoredemo.TimerRouteBuilder' 

注意,這里我們并沒有編寫Java類的main入口,我們只是將RouteBuilder的類名當作參數簡單傳遞給 org.apache.camel.main.Main,然后它將自動加載路由。

控制CamelContext

當啟動Camel后,它會創建一個CamelContext對象,該對象擁有了很多關于如何運行Camel的信息,還包含我們所創建的Route的定義。現在如果你想通過CamelContext獲得更多的控制,那么你需要編寫自己的主類代碼。我在這舉個簡單的例子。

  1. package camelcoredemo;  
  2.  
  3.  
  4.  
  5.  
  6. import org.slf4j.*;  
  7. import org.apache.camel.*;  
  8. import org.apache.camel.impl.*;  
  9. import org.apache.camel.builder.*;  
  10.  
  11.  
  12.  
  13.  
  14. public class TimerMain {  
  15. static Logger LOG = LoggerFactory.getLogger(TimerMain.class);  
  16. public static void main(String[] args) throws Exception {  
  17. new TimerMain().run();  
  18. }  
  19. void run() throws Exception {  
  20. final CamelContext camelContext = new DefaultCamelContext();  
  21. camelContext.addRoutes(createRouteBuilder());  
  22. camelContext.setTracing(true);  
  23. camelContext.start();  
  24.  
  25.  
  26.  
  27.  
  28. Runtime.getRuntime().addShutdownHook(new Thread() {  
  29. public void run() {  
  30. try {  
  31. camelContext.stop();  
  32. catch (Exception e) {  
  33. throw new RuntimeException(e);  
  34. }  
  35. }  
  36. });  
  37.  
  38.  
  39.  
  40.  
  41. waitForStop();  
  42. }  
  43. RouteBuilder createRouteBuilder() {  
  44. return new TimerRouteBuilder();  
  45. }  
  46. void waitForStop() {  
  47. while (true) {  
  48. try {  
  49. Thread.sleep(Long.MAX_VALUE);  
  50. catch (InterruptedException e) {  
  51. break;  
  52. }  
  53. }  
  54. }  

可以看到,我們在createRouteBuilder()方法中重用了已有的TimerRouteBuilder類。現在我們的主類對在什么時候創建、啟動、停止CamelContext有了完全的控制。context(camelContext)對象允許你全局性地控制如何配置Camel,而不是在 Route級。它的JavaDoc鏈接給出了所有setter方法,你可以研究下都可以做些什么。

注意到一點,我們也需要在我們的主類中提供少量設置代碼。首先我們需要處理優雅關閉的問題,所以我們增加了一個Java關閉回調函數去調用context 的stop()方法。其次在context已經啟動后,我們需要增加一個線程阻塞。如果在啟動后你不阻塞你的主線程,那么它會在啟動后就簡單的退出了,那就沒啥用了。你會把Camel一直作為一個服務(就像一個服務器)運行,直至你按下CTRL+C鍵去終止該進程。

#p#

改善啟動CamelContext的主類

如果你不想像上面例子一樣過多的處理主類設置代碼,那么你可以簡單地繼承由camel-core提供的 org.apache.camel.main.Main類作為代替。通過利用這個類,你不僅可以讓你的context自動設置,還可以獲得所有附加的命令行特性,比如控制進程運行多久,啟用追蹤,加載自定義route類等等。

重構了下上一個例子,代碼如下:

  1. package camelcoredemo;  
  2.  
  3. import org.slf4j.*;  
  4. import org.apache.camel.builder.*;  
  5. import org.apache.camel.main.Main;  
  6.  
  7. public class TimerMain2 extends Main {  
  8. static Logger LOG = LoggerFactory.getLogger(TimerMain2.class);  
  9. public static void main(String[] args) throws Exception {  
  10. TimerMain2 main = new TimerMain2();  
  11. main.enableHangupSupport();  
  12. main.addRouteBuilder(createRouteBuilder());  
  13. main.run(args);  
  14. }  
  15. static RouteBuilder createRouteBuilder() {  
  16. return new TimerRouteBuilder();  
  17. }  

現在TimerMain2類的代碼比之前的更少了,你可以試試看,它應該和之前的功能一樣。

  1. bash> mvn compile  
  2. bash> mvn exec:java -Dexec.mainClass=camelcoredemo.TimerMain2 -Dexec.args='-t' 

注意到我們給出-t選項后,會轉儲Route追蹤。使用-h會看到所有可用的選項。

用Camel的注冊機制添加bean

在之前的TimerRouteBuilder例子中,我們已經在代碼中創建了一個匿名Processor。現在如果你想將幾個不同的Processor放在一起,那么使用Camel的注冊機制添加bean的方式將能更好的減少代碼混亂。Camel允許你通過將processing當作bean注入到它的 registry space,然后你只要把它們當作bean組件來進行調用。如下是我的重構代碼:

  1. package camelcoredemo;  
  2.  
  3. import org.slf4j.*;  
  4. import org.apache.camel.*;  
  5. import org.apache.camel.builder.*;  
  6. import org.apache.camel.main.Main;  
  7.  
  8. public class TimerBeansMain extends Main {  
  9. static Logger LOG = LoggerFactory.getLogger(TimerBeansMain.class);  
  10. public static void main(String[] args) throws Exception {  
  11. TimerBeansMain main = new TimerBeansMain();  
  12. main.enableHangupSupport();  
  13. main.bind("processByBean1"new Bean1());  
  14. main.bind("processAgainByBean2"new Bean2());  
  15. main.addRouteBuilder(createRouteBuilder());  
  16. main.run(args);  
  17. }  
  18. static RouteBuilder createRouteBuilder() {  
  19. return new RouteBuilder() {  
  20. public void configure() {  
  21. from("timer://timer1?period=1000")  
  22. .to("bean:processByBean1")  
  23. .to("bean:processAgainByBean2");  
  24. }  
  25. };  
  26. }  
  27.  
  28. // Processor beans  
  29. static class Bean1 implements Processor {  
  30. public void process(Exchange msg) {  
  31. LOG.info("First process {}", msg);  
  32. }  
  33. }  
  34. static class Bean2 implements Processor {  
  35. public void process(Exchange msg) {  
  36. LOG.info("Second process {}", msg);  
  37. }  
  38. }  

現在Route類更簡潔明了,同時處理代碼也被重構到了獨立的類中。當你需要編寫很復雜的Route來實現業務邏輯時,這種方式能夠幫助你更好的組織和測試你的代碼。它能夠讓你構建像”樂高“積木那樣可復用的POJO bean。Camel的registry space同樣可用于其他很多用途,比如你可以自定義許多具有附加功能的endpoint組件或者注冊一些信息,更或者替換線程池實現策略之內的事情。

上述Route示例是用所謂的Java DSL來構成的,它的可讀性較高,你可以用IDE提供的支持查看所有可用于Route的方法。

我希望這篇文章能夠幫助你跳過Camel的摸索階段。除了已經提到的事件組件之外,camel還提供了如下組件:

Have fun!

英文原文:Getting Started with Apache Camel using Java

譯文鏈接:http://www.oschina.net/translate/getting-started-with-apache-camel-using

責任編輯:林師授 來源: OSCHINA編譯
相關推薦

2024-05-07 08:45:16

OpenAILlamaIndex大語言模型

2017-11-27 13:09:00

AndroidGradle代碼

2013-10-22 09:54:42

開發者應用

2025-03-17 08:00:00

2024-02-01 09:37:42

Kubernetes服務網格? 命令

2023-09-11 08:47:20

Go模式uilder

2018-03-27 23:25:40

Paddle

2024-03-21 08:18:00

Chrome前端瀏覽器

2014-07-28 09:15:02

開發框架

2018-07-18 09:12:05

開發者Java工具

2023-05-19 10:04:18

Vue開發者代碼

2019-08-16 10:55:37

開發者技能AI

2012-05-16 18:30:29

iPhone

2019-02-21 13:40:35

Javascript面試前端

2022-01-02 23:26:08

開發SDK Sentry

2013-12-18 14:41:06

蘋果開發者iOS 7

2017-06-30 09:47:45

PythonJava開發者

2012-06-13 01:23:30

開發者程序員

2011-04-13 11:31:06

PIM APIBlackBerry

2009-02-19 08:46:31

Windows 7開發者指南下載
點贊
收藏

51CTO技術棧公眾號

国产成人精品免费在线| 欧美激情三区| 久久精品视频一区二区三区| 毛片一区二区| 精品无人国产偷自产在线| 日韩av播放器| 国产美女福利在线| 不卡高清视频专区| 国产精品视频免费在线观看| 成年人视频软件| 加勒比久久高清| 欧美精品色一区二区三区| 黄色三级中文字幕| 97视频在线观看网站| 岛国精品在线播放| 国产女人精品视频| 午夜影院在线看| 欧美淫片网站| 中文字幕在线亚洲| 国产制服丝袜在线| 欧美国产亚洲精品| 欧美在线你懂的| 久在线观看视频| 污污视频在线| 中文字幕亚洲在| 亚洲欧美日韩中文播放 | 日韩精品一区二区三区电影| 午夜av免费在线观看| 国产一区二区在线观看视频| 国产美女精品人人做人人爽| 97国产精品久久| 999精品在线视频| 欧美日韩老妇| 亚洲午夜av电影| 国产偷人妻精品一区| 国产精品对白| 欧美va亚洲va香蕉在线| 在线一区二区不卡| 国外成人福利视频| 91久久一区二区| 久草青青在线观看| 大桥未久在线视频| 亚洲动漫第一页| 国产精品一色哟哟| 黄色大片在线| 亚洲愉拍自拍另类高清精品| 日本黄网站色大片免费观看| 黄色国产网站在线播放| 成人免费在线播放视频| 亚洲v欧美v另类v综合v日韩v| 精品福利视频导航大全| 久久久五月婷婷| 欧美精品一区二区视频| 日韩毛片在线一区二区毛片| 91麻豆6部合集magnet| 精品亚洲一区二区三区四区五区高| 亚洲精品一区二区口爆| 丁香亚洲综合激情啪啪综合| 国产精品制服诱惑| 欧美一级淫片aaaaaa| 9l国产精品久久久久麻豆| 国产伦理一区二区三区| 五月婷婷伊人网| 久久亚洲一区二区三区四区| 日本欧洲国产一区二区| 日本在线人成| 亚洲精品一二三| 草草草视频在线观看| heyzo在线播放| 欧美日韩激情网| 久久久久久香蕉| 日韩欧国产精品一区综合无码| 91精品国产欧美日韩| 女同性αv亚洲女同志| 视频小说一区二区| 亚洲日韩欧美视频一区| 女同久久另类69精品国产| 一本一道久久综合狠狠老| 久久久久久久久久久人体| 久草手机在线观看| 久久午夜影视| 亚洲一区美女视频在线观看免费| 人妻va精品va欧美va| 国产午夜精品一区二区三区视频| 亚洲一区二区免费视频软件合集| 手机av在线播放| 狠狠爱在线视频一区| 一区二区三区 日韩| 久久的色偷偷| 亚洲美女av在线播放| 可以免费看av的网址| 91久久中文| 国产精品小说在线| 丰满肥臀噗嗤啊x99av| 国产三级精品在线| 欧美做暖暖视频| 国产另类xxxxhd高清| 日韩区在线观看| 成人午夜福利一区二区| 在线看片不卡| 国产精品久久久久久久av电影| 国产不卡精品视频| 久久久久久97三级| 国产一区二区三区在线免费| 久久爱91午夜羞羞| 日韩亚洲欧美综合| 精品日韩在线视频| 中文在线不卡| 91香蕉嫩草影院入口| 日本一区二区三区在线观看视频| 亚洲欧美日韩中文播放| 黄色av免费在线播放| 成人动漫视频| 久久国产加勒比精品无码| 潘金莲一级淫片aaaaaa播放| 国产成人免费网站| 中文字幕av日韩精品| 日韩欧美看国产| 亚洲а∨天堂久久精品9966| av最新在线观看| 久久三级视频| 精品在线观看一区二区| 男人天堂亚洲天堂| 欧美麻豆精品久久久久久| 欧美成人午夜精品免费| 伊人影院久久| 99在线观看| a视频在线播放| 欧美日韩精品三区| 一区二区精品免费| 天堂蜜桃91精品| 精品在线观看一区二区| www.综合| 亚洲国产欧美日韩精品| 九热这里只有精品| 国产成人综合自拍| 热久久最新地址| 亚洲超碰在线观看| 欧美另类精品xxxx孕妇| 国产精品久久久久久免费| 国产精品欧美经典| 亚州精品一二三区| 欧美xxxxx视频| 成人疯狂猛交xxx| 最新97超碰在线| 欧美日韩在线亚洲一区蜜芽| 免费看黄色的视频| 日本中文字幕一区二区有限公司| 奇米影视首页 狠狠色丁香婷婷久久综合| 僵尸再翻生在线观看免费国语| 亚洲国产精彩中文乱码av在线播放| 久久艹精品视频| 成人网页在线观看| 国产免费黄色小视频| 日韩成人午夜| 国产成人一区二| 国产三级视频在线看| 欧美影院精品一区| 日日操免费视频| 国产一区二区三区精品视频| 男人草女人视频| 国产福利一区二区精品秒拍| 欧美怡春院一区二区三区| 欧美日韩国产亚洲沙发| 日本精品视频一区二区三区| 色欲狠狠躁天天躁无码中文字幕| 老司机一区二区| 国产激情片在线观看| 综合久久成人| 情事1991在线| 日本韩国在线视频爽| 日韩一区二区免费视频| 日本在线观看中文字幕| 久久精品水蜜桃av综合天堂| 五月花丁香婷婷| 伊人久久亚洲热| 欧美二区在线| 日韩午夜视频在线| 久久久免费在线观看| 三级黄视频在线观看| 欧美日韩一区二区三区四区五区| caoporn91| 久久天天做天天爱综合色| 亚洲综合色在线观看| 欧美日韩理论| 欧美日韩精品免费观看| av成人在线网站| 91av在线看| 久久综合之合合综合久久| 亚洲国产欧美一区| 亚洲无码久久久久久久| 亚洲国产日韩av| 国产极品视频在线观看| 暴力调教一区二区三区| 成人性生交免费看| 在线日本成人| 亚洲一区二区免费视频软件合集 | 女子免费在线观看视频www| 亚洲国产一区自拍| 国产又粗又长又大视频| 欧美性黄网官网| 国产黄在线免费观看| 国产亚洲成aⅴ人片在线观看| 亚洲欧美激情一区二区三区| 日欧美一区二区| 国产欧美日韩网站| 日韩在线高清| 欧美一级二级三级九九九| 91成人福利| 91精品国产综合久久香蕉922| 亚洲黄色中文字幕| 欧美精品久久久久久久| 亚洲国产另类av| 色狠狠久久av五月综合|| 日韩成人在线一区| 欧亚精品中文字幕| 午夜激情在线| xvideos成人免费中文版| 欧美精品卡一卡二| 成人激情视频| 久久影院理伦片| 亚洲精品高潮| 亚洲自拍偷拍色图| 欧洲亚洲精品| 国产精品久久久久久久久影视 | 久久成人这里只有精品| 成在在线免费视频| 日韩禁在线播放| 日本xxxx人| 精品国产91洋老外米糕| 99热这里只有精品在线| 欧美日韩中文字幕一区| 天天干天天操天天爱| 精品福利免费观看| 久久精品视频日本| 亚洲一区二区三区四区在线观看 | 婷婷久久伊人| 一本久久青青| 蜜桃精品久久久久久久免费影院| 欧美调教在线| 开心色怡人综合网站| 日韩精品免费一区二区三区竹菊| 国产成人一区二区三区免费看| 国产精品白丝久久av网站| 成人国产精品免费视频| 99精品国产九九国产精品| 91精品国产综合久久香蕉| 亚洲图片小说区| 91色视频在线导航| 欧美国产中文高清| 国产精品传媒毛片三区| 高清精品xnxxcom| 国内外成人免费视频| 久久久免费毛片| 欧美亚洲国产免费| 国产精品最新| 色噜噜一区二区| 99九九热只有国产精品| 大地资源第二页在线观看高清版| 亚洲h色精品| 国产日产欧美一区二区| 国内综合精品午夜久久资源| 狠狠干 狠狠操| 久久久久久自在自线| 久久久久久久久久久久91| 久久er99热精品一区二区| 日本高清免费在线视频| 成人毛片老司机大片| 欧美黑人欧美精品刺激| 国产女人aaa级久久久级| 少妇视频一区二区| 一区二区三区四区不卡视频| 国产精品免费av一区二区| 欧美香蕉大胸在线视频观看 | 伊人成综合网站| 国产精品丝袜高跟| 亚洲欧美日本国产| 欧美精彩一区二区三区| 99久久综合| 欧美综合在线播放| 日韩高清在线电影| 亚洲一区二区图片| 91视频一区二区| 欧美性猛交xxxx乱大交少妇| 亚洲国产精品一区二区尤物区| 91午夜精品亚洲一区二区三区| 欧美日韩一本到| 少妇av一区二区| 在线观看国产精品日韩av| 超碰在线免费播放| 国产mv久久久| 成人中文字幕视频| 一区二区成人国产精品| 亚洲成人资源| 五月婷婷之婷婷| 99精品视频在线免费观看| 欧美一区二区三区粗大| 夜夜精品浪潮av一区二区三区| 欧美国产一级片| 亚洲精品在线一区二区| 视频免费一区| 日韩美女免费线视频| 成人av综合网| 色乱码一区二区三区熟女| 免费久久99精品国产自在现线| 午夜视频在线观| 中文字幕第一页久久| 亚洲 欧美 日韩 综合| 日韩欧美中文字幕精品| av女优在线| 人人爽久久涩噜噜噜网站| 91精品入口| 亚洲成年人专区| 免费高清在线视频一区·| 亚洲天堂网一区二区| 亚洲制服丝袜av| 国产精品亚洲欧美在线播放| 一区二区福利视频| 久草在线资源福利站| 国产精品视频在线免费观看| 久久久9色精品国产一区二区三区| 国产极品美女高潮无套久久久| 懂色中文一区二区在线播放| 国精产品一区一区二区三区mba| 欧美午夜精品电影| 免费一级在线观看| 欧美在线激情网| 欧美a一欧美| 男人的天堂狠狠干| 成人自拍视频在线观看| 日本天堂中文字幕| 欧美一区二区三区视频在线| 2021av在线| 国产精品视频最多的网站| 欧美日韩国产一区二区三区不卡 | 美女色狠狠久久| 色综合电影网| 麻豆一区二区在线| 国产aaaaaaaaa| 欧美日韩不卡一区| 婷婷激情在线| 亚洲精品免费av| 中文字幕一区二区av| 成人性生交视频免费观看| 亚洲视频香蕉人妖| av网站免费播放| 欧美成人中文字幕在线| 日韩精品中文字幕吗一区二区| 激情五月六月婷婷| 成人国产一区二区三区精品| 日韩激情一区二区三区| 亚洲成人精品在线| 美女高潮视频在线看| 欧美午夜精品久久久久久蜜| 久久久一二三| 特级西西人体高清大胆| 欧美精品一二三四| 在线观看h网| 超碰在线97av| 亚洲一区欧美激情| www色com| 日韩一区二区麻豆国产| 国产三级电影在线播放| 欧美日韩精品中文字幕一区二区| 日本成人在线一区| 手机在线免费看毛片| 精品人伦一区二区色婷婷| 亚洲天堂免费电影| 亚洲v欧美v另类v综合v日韩v| 久久av资源网| 欧美亚洲天堂网| 国产亚洲日本欧美韩国| 精品国产三级| 大陆极品少妇内射aaaaa| 中文字幕乱码一区二区免费| 国产女无套免费视频| 97碰在线观看| 成人写真视频| 最新国产精品自拍| 在线亚洲人成电影网站色www| 超碰在线网址| 欧美亚洲免费高清在线观看 | 蜜桃av免费看| 337p亚洲精品色噜噜噜| 国产福利片在线观看| 亚洲成色最大综合在线| 国产电影精品久久禁18| 一本一道无码中文字幕精品热| 久久精品一偷一偷国产| 日韩高清一级| 欧美日韩一区二区区| 色婷婷综合久久久久中文 | 91亚洲va在线va天堂va国| 99热免费精品在线观看| 精品国产国产综合精品| 亚洲男人天堂2023| 欧美久久亚洲| 无限资源日本好片| 欧美日韩在线另类| av电影免费在线观看|