第8章 Camel アプリケーションの A-MQ ブローカーとの統合
このチュートリアルでは、A-MQ イメージを使用してクイックスタートをデプロイする方法を説明します。
8.1. Spring Boot Camel A-MQ クイックスタートのビルドおよびデプロイ
この例では、JBoss A-MQ 6 イメージとデプロイメントテンプレートが必要になります。CDK 3.1.1+ を使用する場合、JBoss AM-Q 6 イメージおよびテンプレートはすでにデフォルトで openshift
namespace にインストールされているはずです。
前提条件
- OpenShift が適切に稼働し、Fuse イメージストリームがすでに OpenShift にインストールされているようにしてください。「管理者向けの基本情報」を参照してください。
- Maven リポジトリーが Fuse に対して設定されているようにしてください。詳細は「Maven リポジトリーの設定」を参照してください。
手順
クイックスタートをビルドおよびデプロイするために準備します。
OpenShift に開発者としてログインします。
oc login -u developer -p developer
新しいプロジェクト amq-quickstart を作成します。
oc new-project amq-quickstart
インストールした AーMQ 6 イメージおよびテンプレートのバージョンを確認します。
$ oc get template -n openshift
amqXX-basic
という名前のテンプレートが見つかるはずです。XX
は、OpenShift にインストールされた AーMQ のバージョンになります。
A-MQ 6 イメージを
amq-quickstart
namespace にデプロイします。XX
は、前のステップで確認した AーMQ の実際のバージョンに置き換えます。$ oc process openshift//amqXX-basic -p APPLICATION_NAME=broker -p MQ_USERNAME=admin -p MQ_PASSWORD=admin -p MQ_QUEUES=test -p MQ_PROTOCOL=amqp -n amq-quickstart | oc create -f -
注記古いバージョンの
oc
を使用すると、oc
コマンドが失敗することがあります。この構文は、oc
のバージョン 3.5.x (Kubernetes 1.5.x がベース) で動作します。メッシュエンドポイントの検出に必要なユーザーロールを追加します (Kubernetes REST API 経由)。
$ oc policy add-role-to-user view system:serviceaccount:amq-quickstart:default
Maven ワークフローを使用して、クイックスタートプロジェクトを作成します。
$ mvn org.apache.maven.plugins:maven-archetype-plugin:2.4:generate \ -DarchetypeCatalog=https://maven.repository.redhat.com/ga/io/fabric8/archetypes/archetypes-catalog/2.2.0.fuse-740017-redhat-00003/archetypes-catalog-2.2.0.fuse-740017-redhat-00003-archetype-catalog.xml \ -DarchetypeGroupId=org.jboss.fuse.fis.archetypes \ -DarchetypeArtifactId=spring-boot-camel-amq-archetype \ -DarchetypeVersion=2.2.0.fuse-740017-redhat-00003
archetype プラグインが対話モードに切り替わり、残りのフィールドの入力を要求されます。
Define value for property 'groupId': : org.example.fis Define value for property 'artifactId': : fuse74-spring-boot-camel-amq Define value for property 'version': 1.0-SNAPSHOT: : Define value for property 'package': org.example.fis: : [INFO] Using property: spring-boot-version = 1.5.17.RELEASE Confirm properties configuration: groupId: org.example.fis artifactId: fuse74-spring-boot-camel-amq version: 1.0-SNAPSHOT package: org.example.fis spring-boot-version: 1.5.17.RELEASE Y: :
プロンプトが表示されたら、
groupId
の値にはorg.example.fis
、artifactId
の値にはfuse74-spring-boot-camel-amq
を入力します。残りのフィールドにはデフォルト値を使用します。クイックスタートディレクトリー
fuse74-spring-boot-camel-amq
に移動します。$ cd fuse74-spring-boot-camel-amq
ACTIVEMQ_BROKER_USERNAME
およびACTIVEMQ_BROKER_PASSWORD
環境変数を設定して、ブローカーにログインするためのクライアントクレデンシャルをカスタマイズします。fuse74-spring-boot-camel-amq
プロジェクトで、以下のようにsrc/main/fabric8/deployment.yml
ファイルを編集します。spec: template: spec: containers: - resources: requests: cpu: "0.2" # memory: 256Mi limits: cpu: "1.0" # memory: 256Mi env: - name: AMQP_HOST value: broker-amq-amqp - name: SPRING_APPLICATION_JSON value: '{"server":{"undertow":{"io-threads":1, "worker-threads":2 }}}' - name: AMQP_USERNAME value: admin - name: AMQP_PASSWORD value: admin
mvn
コマンドを実行し、クイックスタートを OpenShift サーバーにデプロイします。mvn fabric8:deploy -Popenshift
クイックスタートが正常に実行されていることを確認するには、以下を行います。
- OpenShift コンソールに移動します。
- プロジェクト amq-quickstart を選択します。
- Applications をクリックします。
- Pods を選択します。
- fis-spring-boot-camel-am-1-xxxxx をクリックします。
Logs をクリックします。
出力にはメッセージが正常に送信されたことが表示されます。
10:17:59.825 [Camel (camel) thread #10 - timer://order] INFO generate-order-route - Generating order order1379.xml 10:17:59.829 [Camel (camel) thread #8 - JmsConsumer[incomingOrders]] INFO jms-cbr-route - Sending order order1379.xml to the UK 10:17:59.829 [Camel (camel) thread #8 - JmsConsumer[incomingOrders]] INFO jms-cbr-route - Done processing order1379.xml 10:18:02.825 [Camel (camel) thread #10 - timer://order] INFO generate-order-route - Generating order order1380.xml 10:18:02.829 [Camel (camel) thread #7 - JmsConsumer[incomingOrders]] INFO jms-cbr-route - Sending order order1380.xml to another country 10:18:02.829 [Camel (camel) thread #7 - JmsConsumer[incomingOrders]] INFO jms-cbr-route - Done processing order1380.xml
- Web インターフェースでルートを表示するには、Open Java Console をクリックし、A-MQ キューのメッセージをチェックします。