PR

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のWebサイトにログインすることでさまざまな限定特典を入手できるようになります。

Think IT会員サービスの概要とメリットをチェック

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