2014/02/19

オープンソースESBエンジンのMule ESBをさわってみる

オープンソースのエンタープライズ・サービス・バスエンジンであるMule ESBをちょっといじってみようということで、ダウンロードしてサンプルアプリのエコーサーバを動かしてみました。

  1. Downloadページから「Mule ESB standalone runtime」をダウンロード。

  2. exportを追加。

    export MULE_HOME=$HOME/mule
    export PATH=$PATH:$MULE_HOME/bin
    
  3. とりあえず起動。

    $ cd ~/mule
    $ mule 
    MULE_HOME is set to /Users/safx/mule
    Running in console (foreground) mode by default, use Ctrl-C to exit...
    MULE_HOME is set to /Users/safx/mule
    Running Mule...
    --> Wrapper Started as Console
    Launching a JVM...
    Starting the Mule Container...
    Wrapper (Version 3.2.3) http://wrapper.tanukisoftware.org
      Copyright 1999-2006 Tanuki Software, Inc.  All Rights Reserved.
    
    
    WARNING - Unable to load the Wrapper's native library because none of the
              following files:
                libwrapper-macosx-x86-64.jnilib
                libwrapper-macosx-universal-64.jnilib
                libwrapper.jnilib
              could be located on the following java.library.path:
                /Users/safx/mule/%LD_LIBRARY_PATH%
                /Users/safx/mule/lib/boot
              Please see the documentation for the wrapper.java.library.path
              configuration property.
              System signals will not be handled correctly.
    
    INFO  2014-02-18 23:52:35,686 [WrapperListener_start_runner] org.mule.module.launcher.MuleContainer: 
    **********************************************************************
    * Mule ESB and Integration Platform                                  *
    * Version: 3.4.0 Build: c8afb471                                     *
    * MuleSoft, Inc.                                                     *
    * For more information go to http://www.mulesoft.org                 *
    *                                                                    *
    * Server started: 2/18/14 11:52 PM                                   *
    * JDK: 1.6.0_65 (mixed mode)                                         *
    * OS: Mac OS X (10.9.1, x86_64)                                      *
    * Host: Safxs-MacBook-Pro.local (192.168.0.5)                        *
    **********************************************************************
    INFO  2014-02-18 23:52:35,688 [WrapperListener_start_runner] org.mule.module.launcher.coreextension.DefaultMuleCoreExtensionManager: Initializing core extensions
    INFO  2014-02-18 23:52:35,688 [WrapperListener_start_runner] org.mule.module.launcher.coreextension.DefaultMuleCoreExtensionManager: Starting core extensions
    INFO  2014-02-18 23:52:35,715 [WrapperListener_start_runner] org.mule.module.launcher.application.DefaultMuleApplication: 
    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    + New app 'default'                                        +
    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    INFO  2014-02-18 23:52:38,127 [WrapperListener_start_runner] org.mule.module.launcher.MuleDeploymentService: 
    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    + Started app 'default'                                    +
    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    INFO  2014-02-18 23:52:38,129 [WrapperListener_start_runner] org.mule.module.launcher.StartupSummaryDeploymentListener: 
    
    **********************************************************************
    *            - - + APPLICATION + - -            * - - + STATUS + - - *
    **********************************************************************
    * default                                       * DEPLOYED           *
    **********************************************************************
    
    INFO  2014-02-18 23:52:38,133 [WrapperListener_start_runner] org.mule.module.launcher.MuleDeploymentService: 
    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    + Mule is up and kicking (every 5000ms)                    +
    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    
  4. $MULE_HOME/examples/echoにあるmule-example-echo–3.x.y.zipを$MULE_HOME/appにコピーします。muleは5秒おきにappフォルダを監視していて、新しいzipが入れられると自動でデプロイするみたいです。

    INFO  2014-02-19 00:01:40,479 [Mule.app.deployer.monitor.1.thread.1] org.mule.module.launcher.DefaultMuleDeployer: Exploding a Mule application archive: file:/Users/safx/mule/apps/mule-example-echo-3.4.0.zip
    INFO  2014-02-19 00:01:40,485 [Mule.app.deployer.monitor.1.thread.1] org.mule.module.launcher.application.DefaultMuleApplication: 
    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    + New app 'mule-example-echo-3.4.0'                        +
    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    INFO  2014-02-19 00:01:40,856 [Mule.app.deployer.monitor.1.thread.1] org.mule.module.launcher.MuleDeploymentService: 
    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    + Started app 'mule-example-echo-3.4.0'                    +
    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    
  5. とりあえず、これでhttp://localhost:8084/foobarにアクセスすると、次のような結果が得られます。もちろんfoobarの部分を変えると、表示内容も変わります。

  6. Ctrl-cで終了します。

ソースコード

echoサンプルには、ソースコードというかフロー制御を記述したXMLがあるだけみたいです。

そのコードを一部抜粋したのがこちらになります。

<flow name="EchoFlow" doc:name="EchoFlow">
    <http:inbound-endpoint host="localhost"
        port="8084" doc:name="HTTP"
        doc:description="Process HTTP requests or responses." exchange-pattern="request-response"/>
    <logger message="About to echo #[message:payload]" level="INFO" doc:name="Logger"/>
    <echo-component doc:name="Echo"/>
</flow>

ちょっとわかりづらいですが、入力をローカルホストのポート8084のHTTPとして、それをEchoコンポーネントに繋げる、というFlowをひとつ定義しているようです。

フロー制御の部分は、以前紹介したNoFloっぽいですね。

おわりに

Mule ESBを導入して、サンプルアプリを動かしてみました。

利用できるのか確認していませんが、いろいろな外部連携もできるみたいです。

関連リンク

0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。