Chapter 8. Integrate a Camel Application with the AMQ Broker
8.1. Example How to Deploy a Spring Boot Camel A-MQ Quickstart
This tutorial shows how to deploy a quickstart using the A-MQ image.
8.1.1. Prerequisites
- Ensure that OpenShift is running correctly and the Fuse image streams are already installed in OpenShift. See Section 4.1, “Prerequisites”.
- Ensure that Maven Repositories are configured for fuse, see Section 4.2.1, “Configure Maven Repositories”
8.1.2. Building and Deploying the Quickstart
This example requires a JBoss A-MQ 6 image and deployment template. If you are using CDK 3.1.1+, JBoss A-MQ 6 images and templates should be already installed in the openshift
namespace by default.
To build and deploy the A-MQ quickstart, perform the following steps:
Log in to OpenShift as a developer, for example:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc login -u developer -p developer
oc login -u developer -p developer
Create a new project amq-quickstart
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc new-project amq-quickstart
oc new-project amq-quickstart
Determine the version of the A-MQ 6 images and templates installed:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get template -n openshift
$ oc get template -n openshift
You should be able to find a template named
amqXX-basic
, whereXX
is the version of A-MQ installed in Openshift.Deploy the A-MQ 6 image in the
amq-quickstart
namespace (replaceXX
with the actual version of A-MQ found in previous step):Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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 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 -
NoteThis
oc
command could fail, if you use an older version ofoc
. This syntax works withoc
versions 3.5.x (based on Kubernetes 1.5.x).Add role which is needed for discovery of mesh endpoints (through Kubernetes REST API agent).
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc policy add-role-to-user view system:serviceaccount:amq-quickstart:default
$ oc policy add-role-to-user view system:serviceaccount:amq-quickstart:default
Create the quickstart project using the Maven workflow:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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-730042-redhat-00002/archetypes-catalog-2.2.0.fuse-730042-redhat-00002-archetype-catalog.xml \ -DarchetypeGroupId=org.jboss.fuse.fis.archetypes \ -DarchetypeArtifactId=spring-boot-camel-amq-archetype \ -DarchetypeVersion=2.2.0.fuse-730042-redhat-00002
$ 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-730042-redhat-00002/archetypes-catalog-2.2.0.fuse-730042-redhat-00002-archetype-catalog.xml \ -DarchetypeGroupId=org.jboss.fuse.fis.archetypes \ -DarchetypeArtifactId=spring-boot-camel-amq-archetype \ -DarchetypeVersion=2.2.0.fuse-730042-redhat-00002
The archetype plug-in switches to interactive mode to prompt you for the remaining fields:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Define value for property 'groupId': : org.example.fis Define value for property 'artifactId': : fuse73-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: fuse73-spring-boot-camel-amq version: 1.0-SNAPSHOT package: org.example.fis spring-boot-version: 1.5.17.RELEASE Y: :
Define value for property 'groupId': : org.example.fis Define value for property 'artifactId': : fuse73-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: fuse73-spring-boot-camel-amq version: 1.0-SNAPSHOT package: org.example.fis spring-boot-version: 1.5.17.RELEASE Y: :
When prompted, enter
org.example.fis
for thegroupId
value andfuse73-spring-boot-camel-amq
for theartifactId
value. Accept the defaults for the remaining fields.Navigate to the quickstart directory
fuse73-spring-boot-camel-amq
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd fuse73-spring-boot-camel-amq
$ cd fuse73-spring-boot-camel-amq
Customize the client credentials for logging on to the broker, by setting the
ACTIVEMQ_BROKER_USERNAME
andACTIVEMQ_BROKER_PASSWORD
environment variables. In thefuse73-spring-boot-camel-amq
project, edit thesrc/main/fabric8/deployment.yml
file, as follows:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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
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
Run the
mvn
command to deploy the quickstart to OpenShift server.Copy to Clipboard Copied! Toggle word wrap Toggle overflow mvn fabric8:deploy -Popenshift
mvn fabric8:deploy -Popenshift
- To verify that the quickstart is running successfully, navigate to the OpenShift console, select the project amq-quickstart, click Applications, select Pods, click fis-spring-boot-camel-am-1-xxxxx, and click Logs.
The output shows the messages are sent successfully.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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
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
- To view the routes on the web interface, click Open Java Console and check the messages in the A-MQ queue.