# データサービスを使ってルートを作成する方法

このセクションでは、前のセクションで作成したデータサービスを使ってルートを作成する方法を説明します。

このシナリオでは、作成したばかりのウェブサービスを使ってルートを定義します。次にこのウェブサービスに要求を送信し、ウェブサービスから応答を取得して、それをさらに活用できます。

## ルートを作成

ルートを作成する場合は、次の項目が必要です:

* メッセージ処理用の接続ファクトリーを指定するcJMSConnectionFactoryコンポーネント
* cJMSコンポーネント(2つ): あるキューからJMSメッセージを読み取ってウェブサービスにリクエストを送信するために1つ、ウェブサービスからレスポンスを取得して別のキューに保存するために1つ
* ウェブサービスに接続するためのcSOAPコンポーネント

### 始める前に

データを送信してウェブサービスを要求するには、メッセージングブローカーとしてApache ActiveMQを使用します。ルートを実行する前に、ActiveMQサーバーを起動する必要があります。ActiveMQサーバーのインストールと起動の詳細は、[Apache ActiveMQをインストール](https://help.qlik.com/talend/r/ja-JP/8.0/installation-guide-linux/install-activemq)と[Apacheのウェブサイト](https://activemq.apache.org/index.html)をご覧ください。

### 手順

1. [Repository] (リポジトリー)ツリービューで、[Route] (ルート)ノードを右クリックし、コンテキストメニューから[Create Route] (ルートの作成)を選択します。
2. ポップアップウィザードで、必要なフィールドに情報を入力します。このシナリオでは、[Name] (名前)フィールドに、「airportRoute」と入力し、[Finish] (終了)をクリックします。

   デザインワークスペースにルートが開きます。

## ルート用にコンポーネントをドロップしてリンク

### 手順

1. [Palette] (パレット)からデザインワークスペースに、次のコンポーネントを配置します:
   * cMQConnectionFactoryコンポーネント
   * cSOAPコンポーネント
   * cProcessorコンポーネント
   * cJMSコンポーネント(2つ)
2. ロールが明確に理解できるようにコンポーネントにラベルを付け、次に示すように[Row] (行) &gt;[Route] (ルート)接続を使って、コンポーネントをリンクします。

   ![デザインワークスペース内のジョブのスクリーンショット。](https://help.qlik.com/talend/ja-JP/data-service-route-example/Resources/images/esb-demo_route1.png)

## コンポーネントを設定

### 手順

1. cMQConnectionFactoryコンポーネントをダブルクリックし、[Component] (コンポーネント)タブで[Basic settings] (基本設定)ビューを開きます。

   ![\[Basic settings\] (基本設定)ビュー。](https://help.qlik.com/talend/ja-JP/data-service-route-example/Resources/images/esb-demo_route2.png)
2. [MQServer]リストからActiveMQを選択します。[Broker URI] (ブローカーURI)フィールドに、ローカルActiveMQサーバーのURIを入力します。このユースケースでは、"tcp://localhost:61616"です。
3. Inputという名前の*cJMS*コンポーネントをダブルクリックし、[Basic settings] (基本設定)ビューを開きます。

   ![\[Basic settings\] (基本設定)ビュー。](https://help.qlik.com/talend/ja-JP/data-service-route-example/Resources/images/esb-demo_route3.png)
4. [Type] (タイプ)リストから、JMSキューにメッセージを送信するための[queue] (キュー)を選択します。[Destination] (デスティネーション)フィールドに、JMSキューの名前(このユースケースではIN)を入力します。ConnectionFactoryのリストから、設定したばかりのActiveMQ接続ファクトリを選択します。
5. この手順を繰り返し、同じConnectionFactoryを使って、*Output*という名前のcJMSコンポーネント設定し、デスティネーションJMSキューに*OUT*という名前を付けます。

   ![\[Basic settings\] (基本設定)ビュー。](https://help.qlik.com/talend/ja-JP/data-service-route-example/Resources/images/esb-demo_route5.png)
6. cSOAPコンポーネントをダブルクリックし、[Basic settings] (基本設定)ビューを開きます。

   ![\[Basic settings\] (基本設定)ビュー。](https://help.qlik.com/talend/ja-JP/data-service-route-example/Resources/images/esb-demo_route6.png)
7. [Address] (アドレス)フィールドに、作成したウェブサービスエンドポイントのURLを入力します。この例では*http://localhost:8200/airport.service*です。[Type] (タイプ)リストで、wsdlURLを選択します。[WSDL File] (WSDLファイル)フィールドに、WSDLファイルへのパスを入力します。この場合は、*http://localhost:8200/airport.service?wsdl*です。[Dataformat] (データフォーマット)リストで、PAYLOADを選択します。
8. cProcessorコンポーネントをダブルクリックし、[Basic settings] (基本設定)ビューを開きます。

   ![\[Basic settings\] (基本設定)ビュー。](https://help.qlik.com/talend/ja-JP/data-service-route-example/Resources/images/esb-demo_route7.png)
9. [Code] (コード)エリアで、次に示すようにコードをカスタマイズし、[Run] (実行)コンソールでメッセージの本文を表示します。
   ```
   System.out.println("The output message is: "+
   exchange.getIn().getBody(String.class));
   ```

## ルートを実行してデータサービスを実装する

### 手順

1. [Run] (実行)ビューをクリックして表示し、[Run] (実行)ボタンをクリックしてルートの実行を開始します。F6を押して実行することもできます。

   ルートが正しく実行されました。

   ![ジョブの実行に成功した後のコンソール結果のスクリーンショット。](https://help.qlik.com/talend/ja-JP/data-service-route-example/Resources/images/esb-demo_route8.png)
2. ActiveMQウェブコンソールに切り替えます。入力側のキューが既に作成されています。

   ![ActiveMQインターフェイスでの入力側のキューのスクリーンショット。キューにコンシューマーが1人います。](https://help.qlik.com/talend/ja-JP/data-service-route-example/Resources/images/esb-demo_route9.png)
3. 入力側のキューに次のメッセージボディを入力し、メッセージを送信します。
   ```
   <air:getAirportInformationByISOCountryCode>
      <air:CountryAbbrviation>CN</air:CountryAbbrviation>
   </air:getAirportInformationByISOCountryCode>
   ```
4. ルートデザイナーで、メッセージペイロードがウェブサービスに送信されたことを確認できます。設定したように、ウェブサービスが呼び出され、応答が別のキューの*OUT*に送信されています。

   キューのメッセージの本文がコンソールに出力されます。

   ![コンソール内のメッセージ。](https://help.qlik.com/talend/ja-JP/data-service-route-example/Resources/images/esb-demo_route12.png)

   ActiveMQ ＝ウェブコンソールから*OUT*キューを確認することもできます。次のように1つのメッセージがあります。

   ![ActiveMQインターフェイス内のキューのスクリーンショット。出力側のキューには、保留中のメッセージが1つ、キューに送信されたメッセージが1つあります。入力側のキューには、コンシューマーが1人、キューに送信されたメッセージが1つ、キューから削除されたメッセージが1つあります。](https://help.qlik.com/talend/ja-JP/data-service-route-example/Resources/images/esb-demo_route13.png)