JBoss Fuseの機能概要

2015年4月2日(木)
渡邉 誉(わたなべ ほまれ)

はじめに

第1回では、JBoss Fuseのシステム連携の考え方について説明しました。今回は、JBoss Fuseの機能概要について具体的に説明していきます。まずは、JBoss Fuseの開発の歴史からひも解いてみましょう。

JBoss Fuse開発の歴史

JBoss Fuseは、Apache Camel(以下Camel)をコアコンポーネントとして構成されていますが、そのCamelは、Apache ActiveMQのサブプロジェクトとして誕生しました。ActiveMQの誕生は古く、2004年にApache Software Foundationへ寄贈されており、2007年Camelが誕生しました。そして2012年にRed Hatが、商用ベンダーとしてApache Camelベースの製品を提供していたFuseSourceを買収し、現在Red Hat JBoss Fuseとして提供しています。

JBoss Fuse開発の歴史

図1:JBoss Fuse開発の歴史

続いて、JBoss Fuseの全体アーキテクチャを見てみましょう。

JBoss Fuseの全体アーキテクチャ

JBoss Fuseは、下記に示すオープンソースソフトウェアの組み合わせで構成されています。

JBoss Fuse全体アーキテクチャ図

図2:JBoss Fuse全体アーキテクチャ図

・Apache Camel
エンタープライズインテグレーションパターン(以下、EIP)のデザインパターンに基づいた、オープンソースのシステム連携フレームワークです。Camelは大変人気のあるオープンソースソフトウェアの一つです。

・Apache ActiveMQ
JMS(Java Message Service)に準拠した、アプリケーション間のメッセージング連携を実現するオープンソースのメッセージ指向ミドルウェアです。

・Apache CXF
JAX-WS(Java API for XML Web Services)、JAX-RS(Java API for RESTful Web Services)といったWebサービス(SOAP、XML/HTTP、REST-ful HTTP、CORBAに対応)インターフェースを構築するオープンソースのフレームワークです。

・Apache Karaf
さまざまなコンポーネントやアプリケーションを配備できる、OSGi(Open Services Gateway initiative)ベースの軽量コンテナです。

・JBoss Fabric8
分散環境でのシステム管理を実現するオープンソースプラットフォームです。容易なプロビジョニング機能、コンフィギュレーション機能、管理機能を提供します。

JBoss Fuseの特徴

JBoss Fuseは、EIPを実装したCamelをコアテクノロジーとして、ESBに求められる以下の代表的な機能を提供した製品です。

  • マルチプロトコルハンドル/変換機能
  • メディエーション機能
  • コンテンツベースルーティング
  • サービスオーケストレーション
  • メッセージ検証

JBoss Fuseの特徴として、第一に軽量な基盤ということ挙げられます。これは、統合フレームワークとして採用しているCamelのシンプルな統合実装と、軽量な実行コンテナとして人気のあるApache Karafといったテクノロジーによって、容易な定義、監視、管理と保守性が担保されているからです。

Camelベースの技術により、高度な開発プラットフォームと、高度な各種アプリケーションとの接続オプションが提供されていることも特徴的です。

開発面では、統合に必要な機能を一通り取り揃えており、使用感もユーザーフレンドリで大変使いやすい開発環境を提供しています。JBoss Developer Studioによるグラフィカルなルートの定義と実行環境を提供しています。

拡張性という面では、Camelが提供する各種コンポーネント(JDBC、FTP/SFTP、HTTP/HTTPS、ファイル、etc.)を利用することで、様々なアプリケーションとの連携性を実現しています。

次にCamelについて機能を追いながら、機能を理解していきましょう。

Camelの機能

Camelでは、アプリケーション間の連携フローを、外部アプリケーションとのインターフェースである「エンドポイント」と、データ変換やルーティングなどメッセージの内部処理である「プロセッサ」で構成します。プロセッサは複数個つなげることが可能で、連続したプロセッサのフロー上をメッセージが流れることにより、定義されたプロセッサの実装に基づいて処理されます。この一連のフローを、「Camelルート」と呼びます。

Camelルートとアプリケーションの関連イメージ

図3:Camelルートとアプリケーションの関連イメージ

Camelルートの実装はDSL(Domain Specific Language)で表現されます。DSLにはJavaとXMLの2種類の書き方があります。下記の例は、data/inboxディレクトリからファイルを読み込み、orderキューにメッセージを書き出す処理を表しています。

Java DSL:from("file:data/inbox").to("jms:queue:order");

XML DSL:

Camelルートは、「CamelContext」という管理単位で実行されます。1つのCamelContextには複数のルート、複数のプロセッサを定義できます。Fuseで構築されたアプリケーション連携フローは、CamelContextの単位でパッケージ化され管理されることになります。

CamelContextの概念図

図4:CamelContextの概念図

CamelのエンドポイントはURIで表記されます(図5)。

エンドポイントを表すURIの例

図5:エンドポイントを表すURIの例

このようにシンプルな定義方法のため、エンドポイントのスキーム変更も簡単にできます。

表1:Apache Camelの代表的なエンドポイント

スキームURIの例説明
Beanbean:beanName[?method=someMethod]POJOと連携するためBean Bindingを行う
Directdirect:name同一CamelContext内のエンドポイントを同期で呼び出す
SEDAseda:name同一CamelContext内のエンドポイントを非同期で呼び出す
VMvm:name同一VM内のエンドポイントを非同期で呼び出す
Filefile://nameOfFileOrDirectoryメッセージをファイルへ送信する。またはディレクトリまたはファイルをポーリングする
Loglog:loggingCategory[?level=ERROR]メッセージをログ出力する
JMSjms:[topic:]destinationNameJMSプロバイダと連携する
activeMQactivemq:[queue:|topic:]destinationNameactiveMQブローカと連携する
HTTPhttp://hostname[:port]外部のHTTPサーバーを呼び出す
CXFcxf:address[?serviceClass=...]Webサービス統合のためApache CXFと連携する
JDBCjdbc:dataSourceName?optionsJDBCのクエリとオペレーションを実行する
FTPftp://host[:port]/fileNameFTP上でファイルの送受信を行う
SFTPsftp://host[:port]/fileNameSFTP上でファイルの送受信を行う

表1に示したエンドポイントは、コンポーネントとして実装されます。コンポーネントは拡張が容易で、JBoss Fuse 6.1では150種類以上のコンポーネントが提供されています。表2で、その一部を紹介します。

表2:JBoss Fuse 6.1で提供される EIPコンポーネントの例

AMQPJCR
AtomJDBC
Amazon Web Services
AWS-DDB, AWS-S3
AWS-SDB, AWS-SES
AWS-SNS, AWS-SQS
JMS
LDAPMail/SMTP
SAPLucene/Solr
WS-CXFMongoDB
EJBMQTT
FileSIP
FTP/SFTPSpring Batch/Web Services
HTTPSSH
Google App EngineJDBC
Hadoop (hbase, HDFS)Twitter
HibernateWebSocket
TimerStream
JT400など多数
著者
渡邉 誉(わたなべ ほまれ)
レッドハット株式会社

サービス事業統括本部 ソリューション・アーキテクト部
ソリューションアーキテクト
遺伝子・タンパク質解析分野からITの世界に飛び込み、バイオIT研究分野からエ ンタープライズ向けシステム提案をする、ミドルウェアのプリセー ルスとして転身。関西の製造業を中心にSOA・BPMのプリセールスエンジニアとして従事。2014年レッドハットに入社。趣味はスノーボード、料理(自宅では私が料理担当)、「7つの習慣」が人生のバイブル。

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています