git push
. But if you've made any changes to the app-server environment you'll find it gets blitzed on deployment (this is actually a good thing since it'll force you to get into the habits of automating deployments).To deal with this Openshift gives you the ability to define a set of action-hooks that get called during the various stages of the applications lifecycle.
These are just shell scripts and are pretty easy to define - just create a file in the
.openshift/action_hooks
directory in the project root matching the name of the hook you want. In the case of queue deployment we need a post_start script which uses the JBOSS CLI to create queues.
The script
.openshift/action_hooks/post_start
looks like this:
echo "Starting JBOSS Queue Configuration..."
${OPENSHIFT_JBOSSAS_DIR}/bin/tools/jboss-cli.sh --connect controller=${OPENSHIFT_JBOSSAS_IP}:${OPENSHIFT_JBOSSAS_MANAGEMENT_NATIVE_PORT} --file=${OPENSHIFT_REPO_DIR}/cli/create-queues.cli
echo "JBOSS configuration complete!"
Make sure the script is executable via
chmod +x .openshift/action_hooks/post_start
.The use of various environment variables ensures the script will work regardless of the configuration the image fires-up with and the "echo" commands ensures some sort of output is dumped to stdout during push for confirmation.
This script references a cli script (cli/create-queues.cli) looking like this:
jms-queue add --queue-address=queueA --entries=queue/QueueA
jms-queue add --queue-address=queueB --entries=queue/QueueB
And hey presto! On deployment you'll see a couple of messages output showing:
remote: Starting JBOSS Queue Configuration...
remote: JBOSS configuration complete!
And if you tail the logs (
rhc tail -a
) you should see confirmation of the deployment as below:
2016/02/01 16:57:57,641 INFO [org.hornetq.core.server.impl.HornetQServerImpl] (MSC service thread 1-8) trying to deploy queue jms.queue.queueA
2016/02/01 16:57:57,644 INFO [org.jboss.as.messaging] (MSC service thread 1-8) JBAS011601: Bound messaging object to jndi name java:/queue/QueueA
2016/02/01 16:57:57,738 INFO [org.hornetq.core.server.impl.HornetQServerImpl] (MSC service thread 1-8) trying to deploy queue jms.queue.queueB
2016/02/01 16:57:57,740 INFO [org.jboss.as.messaging] (MSC service thread 1-8) JBAS011601: Bound messaging object to jndi name java:/queue/QueueB
Finally the JBOSS console will show your queues in all their glory...
No comments:
Post a Comment