1. 程式人生 > >Apache Camel簡介與入門

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