読者です 読者をやめる 読者になる 読者になる

Camel In Action の1章の適当邦訳 〜Apache Camel その1

etc Java Scala


以下で公開されている Camel In Action の適当な邦訳です。
http://www.manning.com/ibsen/Camel_ch01_update.pdf

Table of Contents

  • Part 1 – First Steps
    • Chapter One: Meeting Camel
    • Chapter Two: Routing with Camel
  • Part 2 – Core Camel
    • Chapter Three: Transforming Data with Camel Chapter Four: Using Beans with Camel
    • Chapter Five: Error Handling Chapter Six: Testing with Camel
    • Chapter Seven: Understanding Components
    • Chapter Eight: Enterprise Integrations Patterns
  • Part 3 – Out in the Wild
    • Chapter Nine: Using Transactions
    • Chapter Ten: Concurrency and Scalability
    • Chapter Eleven: Developing Camel Projects Chapter Twelve: Management and Monitoring
    • Chapter Thirteen: Running and Deploying Camel
  • Appendixes
    • Appendix A: Simple, the Expression Language
    • Appendix B: Expressions and Predicates
    • Appendix C: The Producer and Consumer Templates
    • Appendix D: The Camel Community
    • Appendix E: Akka and Camel

1.Meeting Camel

この章では以下の項目を扱います

  • Camel の紹介
  • Camel の主な機能
  • Camel の最初の例
  • Camel のアーキテクチャとコンセプト
  • Camel の乗りこなしの1歩

複雑なシステムをスクラッチで構築する試みは非常に高くつき、たいていは成功しないものです。効果的でリスクの少ない方法は、ジグソーパズルのように実績のある既存のシステムを組み合わせることです。金融取引や旅行健康保険、娯楽などを電話1本で済ますことができるのも、多数の統合システムがあってこそです。
ジグソーパズルは、それぞれのピースがお互いに単純に、シームレスに、確実に組み合わさらないと完成ではありません。これはまさにシステム統合のプロジェクトにも当てはまります。ジグソーパズルのピースはお互いに接合するようにできていますが、システムは我々が統合しなければなりません。インテグレーションフレームワークの目的は個々のシステム間のギャップを埋めることとなります。インテグレータとして、あなたは統合システムがどのように機能するかというより、どのように相互運用するかといった個々のシステムの外側からの視点に注力することができます。良いインテグレーションフレームワークは単純さを提供します。この単純とはフレームワークがシステム間のグルーとなり、複雑なシステムを抽象的に管理し、それれらがシームレスにプラグインできる ということとなります。
Apache Camel はまさにこのようなインテグレーションフレームワークです。この本は Camel をどのように使うのか、なぜ我々が Camel を最高のインテグレーションフレームワークの1つと考えるのかを理解するのに役立ちます。
この章ではCamelを導入し、いくつかの重要な機能にハイライトを当てます。我々は、Camel ディストリビューションを見ていき、Camel の例を実行する方法を説明してきます。そして最後にCamelのアーキテクチャを理解できるようにCamelコアのコンセプトを提示します。
準備はよいですか?ではCamelに合いに行きましょう。

1.1 Camel の紹介

Camel はシステム統合プロジェクトを生産的に楽しくするためのインテグレーションフレームワークです。Camel プロジェクトは 2007 年に開始された比較的若いプロジェクトです。Camel はすでに成熟したオープンソースプロジェクトであり、Apache2ライセンスの下で利用可能です。そして強力なコミュニティがあります。
Camel は簡素なインテグレーションに注力します。我々は、あなたがこれらのページを読み終わるころには Camel を評価して、あなたの道具箱リストに必須なものとして付け加えると確信しています。

1.1.1 Camelとはなにか?

Camel フレームワークのコアはルーティングエンジンです。より正確にはルーティングエンジンビルダーと言えるでしょう。メッセージを受け入れ可能なソースを定義し、どのようにメッセージを処理して送信先をどこにするかを指定できます。Camel はビジネスプロセスのような複雑なルーティングルールを定義するインテグレーションのための言語となります。
Camel の基本原則の1つに、処理する必要のある型について仮定を設けないというものがあります。これは重要なポイントです。統合するシステムの間でやり取りするデータを正規化するための変換処理を開発する必要がなくなるためです。


Camel はシステム統合についての高レベルの抽象化を提供します。これによりシステムが使用しているデータ型やプロトコルの違いを考慮せず、同一の API にて様々なシステムの対話を可能となります。Camel のコンポーネントは様々なプロトコルとデータ型をターゲットにした特定の API 実装を提供します。すぐに使える80を超えるプロトコルとデータ型をサポートしているのです。拡張性とモジュラーアーキテクチャにより独自のプロトコル実装もシームレスに統合することができます。このようなアーキテクチャの選択により、変換処理の実装を不要とし、無駄なく短期間での統合が可能となります。豊富な処理能力が必要となる、他のプロジェクトへCamelを組み込むことは非常に有効なことになります。例えば、オープンソースプロジェクトのApache ServiceMix と ActiveMQ はエンタープライズ統合の手段として既に Camel を使用しています。


Camel では何が出来ないかについても言及する必要があるでしょう。Camel はエンタープライズ・サービス・バス(ESB)ではありません。しかしCamel はルーティングと変換、モニタリング、オーケストレーションなどをサポートしているため軽量のESBとも呼ぶこともできるでしょう。Camel はコンテナや高信頼性のメッセージバスを持っていません。しかし OpenESB や 先に述べた ServiceMix 内に配備することができます。そのため、我々は Camel をESBとは呼ばずに統合フレームワークと呼ぶのが適していると考えています。
Camel を理解するには、主要な機能を見ていくのが良いと思います。早速見ていきましょう。


Camel In Action の1章の適当邦訳 〜Apache Camel その2 - etc9に続く