Apache Camel簡介與入門
基礎
Apache Camel十一個Java庫和引擎,有多種不同的整合模式,然而他並不是BPMN或者ESB,雖然可以在此引擎下實現他們。Apache Camel是一個程式設計人員調節、整合問題的工具。
Message
org.apache.camel.Message是Camel中一個基本的包含資料和路由的實體,Messages包含了
- 唯一的識別(Unique Identifier)--java.lang.String型別
- 頭資訊(Headers)--會提供一些內容的提示,頭資訊被組織成名值對的形式,string-->Object
- 內容(body)是一個Object型別的物件,這就意味著,你要確保接收器能夠理解訊息的內容。當訊息傳送器和接收器使用不同的內容格式的時候,你可以使用Camel的資料轉換機制將其轉換為一個特定的格式。在許多情況下預先定義型別可以被自動轉換。
- 錯誤標記(fault flag)使用來標記正常或者錯誤的標記,通常由一些標準類定義,例如(WSDL)
Exchange
org.apache.camel.Exchange 是一個訊息之間通訊的抽象的會話。下面列出的就是這樣一個會話,使得元件更為全面
- Exchange ID
- MEP 一個類似InOnly或者InOut的訊息交換模式。當模式是InOnly的時候,訊息交換中只包含IN-Message
- Exception在路由過程中的任何異常
- Properties有點類似與message 的headers ,但是他們將持續到整個exchange結束,Camel還可能利用他們進行一些特殊的通訊。
- IN-Message
- OUT-Message
Camel Context
現在讓我們來看看一張圖,我們看到的是一些不同的相互連結的構件,而在他們中間起連結作用的粘合劑就是Camel Context了。他將實體連結一起,有的時候被稱為Camel執行是容器。
Endpoint
是Camel中的一個基本概念,Endpoint作為Camel系統中一個通道的端點,可以傳送或者接受訊息。在Camel中Endpoint使用URI來配置。在執行時Camel通過URI來查詢端點。端點的功能強大、全面而且又可維護。來看一些例子。
?1 2 3 4 5 6 |
//Pooling
on data /inbox
every 2 seconds
file :data /inbox ?delay=2000
//JMS
queendpoid with name order
jms:queue:order
//Run 's
external Application with output.txt as parameter.
exec :archiver.exe?output.txt
|
Component
Component是一些Endpoints URI的集合。他們通過連線碼來連結(例如file:,jms:),而且作為一個endpoint的工廠。現在Camel中又超過80個Component。當然你一可以通過擴充套件org.apache.camel.impl.DefaultComponent來實現自己的Component
Route
顧名思義,Route,就是路由,它定義了Message如何在一個系統中傳輸的真實路徑或者通道。路由引擎自身並不暴露給開發者,但是開發者可以自己定義路由,並且需要信任引擎可以完成複雜的傳輸工作。每個路由都有一個唯一的識別符號,用來記錄日誌、除錯、監控,以及啟動或者停止路由。
路由也有一個輸入的Message,因此他們也有效的連結到一個輸入端點。路由定義了一種領域特有的語言(DSL)。Camel提供了java、scala和基於XM的Route-DSL。
示例路由:
?1 2 |
//simple
route.
from( "file:data/inbox" ).to( "jms:queue:order" )
|
路由可以使用過濾器、多播、接收列表、並行處理來定義,從而變得非常靈活。由於這篇文章只是簡單的介紹Camel,我這裡只給出一個註釋的例子。這個使用了“direct:”架構,他提供了當訊息生產者發出訊息後直接的、同步的呼叫。
?1 2 3 4 5 |
//Every
10 seconds timer sends an Exchange to direct:prepare
from( "timer://foo?fixedRate=true&period=10000" ).to( "direct:prepare" );
//
Onother Routes can begin from "direct:prepare"
//
This now depends on timer, logging and putting a message to the queue.
from(direct:prepare).to( "log:com.mycompany.order?level=DEBUG" ).to( "jms:queue:order?jmsMessageType=Text" );
|
Processor
org.apache.camel.Processor 是一個訊息接受者和訊息通訊的處理器。當然,Processor是Route的一個元素,可用來訊息格式轉換或者其他的一些變換。
?
1
2
3
相關推薦Apache Camel簡介與入門基礎 Apache Camel十一個Java庫和引擎,有多種不同的整合模式,然而他並不是BPMN或者ESB,雖然可以在此引擎下實現他們。Apache Camel是一個程式設計人員調節、整合問題的工具。 Message org.apache.camel python學習篇:python簡介與入門1-1 一行代碼 組合 python代碼 index python語言 cmd https turn 簡介與特點 python語言是由Guido van Rossum在1989年開發的,並最終於1991年初發表。 python是一種面向對象、解釋型的計算機語言,語法簡潔清 Python 簡介與入門block 運維 版本 微軟雅黑 gui left right 密碼 ora Python 簡介 Python (英國發音:/?pa?θ?n/ 美國發音:/?pa?θɑ?n/), 是一種面向對象的解釋型計算機程序設計語言,由荷蘭人Guido van Rossum於1989年 關於soapui簡介與入門得到 -s eat 之間 interface 技術 彈出窗口 我們 amd SoapUI簡介 SoapUI是一個開源測試工具,通過soap/http來檢查、調用、實現Web Service的功能/負載/符合性測試。該工具既可作為一個單獨的測試軟件使用,也可利用插件集成到Ec Python學習之路【第一篇】:Python簡介與入門Python簡介 一、什麼是Python Python 是一個高層次的結合瞭解釋性、編譯性、互動性和麵向物件的指令碼語言。 Python 的設計具有很強的可讀性,相比其他語言經常使用英文關鍵字,其他語言的一些標點符號,它具有比其他語言更有特色語法結構。 Python 是一種解釋型語言:原始碼不是 java8第五課:StreamAPI簡介與入門這節課開始我們開始學Java8的另一個特性: Stream API 首先說明,這玩意依然用的不多,但是,還是希望大家知道有這麼個東西。 什麼是Stream API? 就是java8給我們提供了一個新的類叫Stream,這個類可以用來 Mybatis(一)Mybatis簡介與入門程式Mybatis簡介: MyBatis是一個優秀的持久層框架,它對jdbc的操作資料庫的過程進行封裝,使開發者只需要關注 SQL 本身,而不需要花費精力去處理例如註冊驅動、建立connection、建立statement、手動設定引數、結果集檢索等jdbc繁雜的過程程式碼。 Mybatis Dubbox簡介與入門實戰前言 什麼是Dubbox?Dubbox是一個分散式服務框架,其前身是阿里巴巴開源專案Dubbo,被國內電商及網際網路專案中使用,後期阿里巴巴停止了Dubbo專案的維護(現Dubbo已捐獻給Apache基金會),因為阿里巴巴內部的HSF框架比Dubbo更高效,更貼 JWT簡介與入門什麼是JWT Json web token (JWT), 是為了在網路應用環境間傳遞宣告而執行的一種基於JSON的開放標準((RFC 7519).該token被設計為緊湊且安全的,特別適用於分散式站點的單點登入(SSO)場景。JWT的宣告一般被用來在身份提供者 springmvc(一)springmvc簡介與入門程序date() get pin 靜態資源 價格 pdf type ase -a springmvc概括: Spring Web MVC是一種基於Java的實現了Web MVC設計模式的請求驅動類型的輕量級Web框架,即使用了MVC架構模式的思想,將web層進行職責解耦,基 Apache Kafka 簡介與使用Kafka 可以簡單理解為分散式MQ,用Scala編寫,執行在JVM上。 分散式程式,除了其自身的基本概念外,最重要的就是要知道它是如何實現高併發和高可用的: Kafka 用 Partitions 實現了高併發; Kafka 用 Partitions 複製 Mybatis 簡介與入門目錄 1. Mybatis是什麼? Mybatis(3.x版本以前叫 ibatis)是一款一流的支援自定義 SQL、儲存過程和高階對映的持久化框架。Mybatis 幾乎消除了所有的 JDBC 程式 Oracle入門第一天(上)——簡介與安裝http 添加數據 system 第一個 上網 操作 develop 窗口 style 一、Oracle介紹 Oracle 公司是全球最大的信息管理軟件及服務供應商,成立於1977年 Oracle 公司因其復雜的關系數據庫產品而聞名。Oracle的關系數據庫是 架構設計:系統間通訊(36)——Apache Camel快速入門(上)架構設計:系統間通訊(36)——Apache Camel快速入門(上) :http://blog.csdn.net/yinwenjie(未經允許嚴禁用於商業用途!) https://blog.csdn.net/yinwenjie/article/details/51692340 1、本專題主 React 入門學習筆記整理(二)—— JSX簡介與語法先看下這段程式碼: import React from 'react'; //最終渲染需要呼叫ReactDOM庫,將jsx渲染都頁面中 import ReactDOM from 'react-dom'; import * as serviceWorker from './serviceWorker'; l Docker入門之-1簡介與安裝一、簡介 a、為什麼出現docker? 一款產品從開發到上線,從作業系統,到執行環境,再到應用配置。作為開發+運維之間的協作我們需要關心很多東西,這也是很多網際網路公司都不得不面對的問題,特別是各種版本的迭代之後,不同版本環境的相容,對運維人員都是考驗 Doc scala入門1(簡介與基礎語法1)scala是什麼? Scala 是一門 函式式的面向物件語言。他執行在Java虛擬機器上. 第一個Scala例子 作為學習Scala的第一步,我們將首先寫一個標準的HelloWorld,這個雖然不是很有趣,但是它可以讓你對Scala有一個 jQuery——入門(一)JQuery的簡介與基本選擇器的使用JQuery入門(一)—— 基本簡介與基本選擇器的使用 一、jQuery簡介 jquery是2006年1月由美國人John Resig在紐約barcamp釋出,目前已經成為輔助javascript開發的最流行的javascri 火箭入門GXChain開發系列第一篇|簡介與執行原理火箭入門GXChain開發系列第一篇|簡介與執行原理 第一期:智慧合約簡介與執行原理 智慧合約簡介 智慧合約應用場景 智慧合約與dapp 智慧合約執行原理 webassembly虛擬機器 abi檔案與wast檔案 邏輯與持久化儲存(action與table) 智慧合約環境部署 智慧合 元資料與資料治理|Apache Atlas API使用入門(第十一篇)一 概念講解 Apache atlas Api主要是對Type,Entity,Attribute這3個構件的增刪改查操作(Api和Admin UI供外部呼叫,其它的被封裝或在 配置檔案中) Atlas Type System A |