チュートリアル: 「Hello World」Mule アプリケーションの作成

このチュートリアルでは、Web ブラウザーから送信された要求に対して「Hello Mule」というメッセージを返す例を使用して、Mule アプリケーションがどのようにやり取りするのかをシンプルな HTTP 要求-返信フローで実際に示します。

この例は非常にシンプルです。より複雑なアプリケーションでは、外部サーバー (SAP、Salesforce、データベース、FTP サーバーなど) への接続、Mule プロジェクト内での API 仕様の直接インポートと実装、セキュリティのセットアップ、データの処理や変換などをプログラムで行うことができます。これらの作業の説明は、この例のスコープを超えています。

「Hello Mule」という名前の Mule アプリケーションと、Listener、Set Payload、Logger などのコンポーネントが表示されている開発環境
Figure 1. Anypoint Studio での hellomule

このアプリケーションは、Anypoint Studio でプロジェクトとしてセットアップして実行します。

前提条件

Anypoint Studio をインストールしたら、例をセットアップして実行できます。

例のしくみ

Hello Mule の例は、1 つのシンプルな Mule フローで構成されています。このフローは、HTTP 要求を受け入れ、メッセージに対して静的ペイロードを設定して、応答を返します。

インバウンド HTTP エンドポイントは、Web サービスに対して送信された要求を受け取ります。 メッセージ交換パターンは要求-応答であるため、HTTP エンドポイントはメッセージの受信と返信を管理します。

Set Payload コンポーネントは、その名前が示すようにメッセージペイロードに値を設定します。この例では、値として DataWeave 式を使用して静的文字列をペイロードに対して設定します。

例をセットアップする

以下の手順に従って、自分の Anypoint Studio インスタンスで例を作成してください。Anypoint Studio でテンプレートアプリケーションを作成し、ユースケースに基づいたテンプレートの設定を調整することで、Mule でカスタムアプリケーションを作成することができます。

  1. Anypoint Studio で ​hellomule​ という名前のプロジェクトを作成します。

    1. [File (ファイル)]​ > ​[New (新規)]​ > ​[Mule Project (Mule プロジェクト)]​ を選択し、表示されたダイアログの ​[Project Name (プロジェクト名)]​ に「hellomule」と入力します。

      ランタイムバージョンを選択するオプションが表示されている、「Hello Mule」という名前の新しい Mule プロジェクトを作成するためのダイアログボックス

      プロジェクト名には、空白スペースを含めません。

    2. [Finish (完了)]​ をクリックします。

  2. HTTP Listener コンポーネントを ​hellomule​ のキャンバスにドラッグします。

    1. プロジェクトの ​[Mule Palette (Mule パレット)]​ タブで ​[HTTP]​ をクリックします。

      Mule パレットの HTTP Connector
    2. Listener​ コンポーネントを ​hellomuleFlow​ キャンバスにドラッグします。

      Mule アプリケーションの HTTP Listener 設定

      [Listener]​ タブの設定 UI が開いていない場合は、キャンバスの ​Listener​ コンポーネントをクリックして開きます。

      タブ内に赤いボックスが表示されていますが、これは ​[Connector configuration (設定)]​ と ​[Path (パス)]​ の項目に値が必要であるためです。

  3. [Listener]​ タブで ​Listener​ コンポーネントを設定します。

    Mule アプリケーションの HTTP Listener の設定
    1. リスナーの ​[Path (パス)]​ 項目にパス ​/hellomule​ を入力します。

    2. リスナーの ​[Connector configuration (設定)]​ 項目の下にある緑色のプラスアイコン (​+​) をクリックして、​[HTTP Listener config (HTTP Listener 設定)]​ ダイアログを開きます。

    3. ダイアログで ​[Test Connection (接続をテスト)]​ をクリックして、デフォルトのリスナー設定を確認します。

      Mule の成功した HTTP Listener 接続テストが表示されているパネル
      • 接続に成功すると、​[Test connection (接続をテスト)]​ ダイアログが開いて「Test connection successful! (テスト正続に成功しました)」と表示されます。

      • 接続に失敗した場合は、使用していないポート番号 (​8082​ や ​8083​ など) を使用して接続を再テストしてから、設定を追加してください。

    4. [OK]​ をクリックして、有効な設定をプロジェクトに追加します。

  4. [Mule Palette (Mule パレット)]​ タブで ​[Core (コア)]​ をクリックし、​Set Payload​ コンポーネントを見つけてキャンバスの ​[Process (プロセス)]​ エリアにドラッグします。

    Mule フローのペイロードを設定する設定パネル
    • Set Payload​ コンポーネントが見つからない場合は、​[Mule Palette (Mule パレット)]​ タブの一番上にある検索項目を試してください。

    • [Set Payload]​ タブの設定 UI が開いていない場合は、​Set Payload​ コンポーネントをクリックして設定 UI を開いてください。

  5. Set Payload​ コンポーネントの ​[Value (値)]​ 項目で ​[fx]​ 項目を​選択解除して​、文字列 ​"Hello Mule!"​ を入力します。

    [fx]​ の選択を解除すると、項目のコンテンツは文字列 ​"Hello Mule"​ のみとなり、ハッシュ (​#​) や角括弧 (​[]​) は​含まれません​。

  6. [Mule Palette (Mule パレット)]​ タブで ​[Core (コア)]​ をクリックし、​Logger​ コンポーネントを探して Transform Message コンポーネントの右側にドラッグします。

    Hello Mule の Logger コンポーネント設定
    • Logger​ コンポーネントが見つからない場合は、​[Mule Palette (Mule パレット)]​ タブの一番上にある検索項目を試してください。

    • [Logger]​ タブの設定 UI が開いていない場合は、キャンバスの ​Logger​ コンポーネントをクリックして開きます。

  7. ロガーの ​[Message (メッセージ)]​ 項目で、​[fx]​ ボタンをクリックして、要求パスを Anypoint Studio コンソールに出力するために次の DataWeave 式を追加します。

    attributes.requestPath

  8. Anypoint Studio で ​[File (ファイル)]​ > ​[Save (保存)]​ を選択してプロジェクトを保存します。

  9. Hello Mule の例を実行してテストする​に進みます。

Hello Mule の例を実行してテストする

Anypoint Studio で Hello Mule をセットアップしたら、実行してテストします。

  1. Anypoint Studio キャンバスを右クリックし、​[Run project hellomule (hellomule プロジェクトを実行)]​ を選択して ​hellomule​ アプリケーションを実行します。

    Hello Mule の実行

    または、Anypoint Studio の一番上にある [Run (実行)] ボタン (​実行アイコン​) をクリックして、表示されたドロップダウンメニューから ​hellomule​ を選択することもできます。

    どちらの操作を実行した場合もビルドプロセスが開始され、Anypoint Studio コンソールが開いて、2 フェーズのビルドおよびデプロイメントプロセスに関する重要なログ情報が表示されます。

    最後が次のようになっているメッセージが Anypoint Studio コンソールに表示されれば、プロジェクトは実行中です。

    **********************************************************
    *          - - + DOMAIN + - -   * - - + STATUS + - - *
    **********************************************************
    * default                       * DEPLOYED           *
    **********************************************************
    
    *******************************************************************************
    *    - - + APPLICATION + - -    *  - - + DOMAIN + - -    * - - + STATUS + - - *
    *******************************************************************************
    * hellomule                     * default                * DEPLOYED           *
    *******************************************************************************

    DEPLOYED​ 通知ではなく失敗通知 (​FAILED​) が表示された場合は、エラーメッセージを確認してください。次のようなメッセージが表示された場合は、HTTP Listener の設定で別の HTTP ポートを指定してください。

    Could not create server: A server in port(8081) already exists
    for host(0.0.0.0) or one overlapping it (0.0.0.0).`

    その後、プロジェクトを保存して再実行します。エラーが繰り返される場合は、ホストを ​localhost​ に変更してみてください。

  2. アプリケーションが実行されたら、ブラウザーウィンドウを開き、リスナーへの URL を入力してアプリケーションをトリガーします。

    ローカルサーバーからの応答「Hello Mule!」が表示されている Web ブラウザー

    HTTP Listener で設定されているのと同じホストとポート (例: http://0.0.0.0:8081/hellomule​) を使用する必要があります。

  3. ブラウザーに ​Hello Mule!​ のメッセージが表示されることを確認します。

  4. Anypoint Studio の ​[Console (コンソール)]​ タブに表示されるメッセージで、最初の ​INFO​ 行の​最後​に要求のパス (​/hellomule​) が付加されていることを確認します (​org.mule.runtime.core.internal.processor.LoggerMessageProcessor: /hellomule​)。

    「Hello Mule」という名前の Mule アプリケーションからのログが表示されているコンソール出力

Hello Mule の例の設定 XML

次の XML は、例で使用したフローと HTTP Listener の設定を示しています。スペースを節約するため、必要のない ​doc:id​ 属性は省略してあります。

Anypoint Studio からの XML 設定
<http:listener-config name="HTTP_Listener_config"
                      doc:name="HTTP Listener config" >
  <http:listener-connection host="0.0.0.0" port="8081" />
</http:listener-config>
<flow name="hello-muleFlow" >
  <http:listener doc:name="Listener"
                 config-ref="HTTP_Listener_config"
                 path="/hellomule"/>
  <set-payload value="Hello Mule!"
               doc:name="Set Payload"
               mimeType="text/plain"/>
  <logger level="INFO"
          doc:name="Logger"
          message="#[attributes.requestPath]"/>
</flow>

キャンバスの下にある ​[XML Configuration (XML 設定)]​ タブは、XML の編集ページを提供します。

Hello Mule の XML 設定