| /* |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with |
| * this work for additional information regarding copyright ownership. |
| * The ASF licenses this file to You under the Apache License, Version 2.0 |
| * (the "License"); you may not use this file except in compliance with |
| * the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| ActiveMQ & Camel in Blueprint Example |
| ===================================== |
| |
| Purpose |
| ------- |
| Deploys Camel EIP routes as an OSGi bundle using Blueprint. These routes |
| make use of an ActiveMQ queue hosted on the local broker deployed in ServiceMix. |
| |
| Configuration makes use of the OSGi Configuration Admin service and |
| Blueprint property placeholders, and the example demonstrates how to |
| deploy the properties file from the ServiceMix console. |
| |
| |
| Explanation |
| ----------- |
| The Camel routes are defined in a Blueprint XML file, blueprint.xml, which can be |
| found in the src/main/resources/OSGI-INF/blueprint directory of this example. |
| |
| The first route is defined in the first <route> element and can be explained as follows: |
| |
| 1. A timer endpoint generates a heartbeat event every 2000ms. |
| |
| 2. A callout is made to a transformer bean that transforms each |
| heartbeat message to the current date and time. |
| |
| 3. The message is sent to the LOG.ME queue on the ActiveMQ broker. |
| |
| and the second route can be explained as follows: |
| |
| 1. The message is consumed from the LOG.ME queue on the ActiveMQ broker. |
| |
| 2. A log endpoint sends the transformed message to the |
| Jakarta commons logger. |
| |
| The blueprint.xml file also contains the following elements: |
| |
| - A <bean> and <reference> element that setup the ActiveMQ component to use the |
| ConnectionFactory from the local ActiveMQ broker deployed in ServiceMix. |
| |
| - A <bean> element that instantiates the transformer bean using standard |
| Blueprint configuration syntax and specifies a prefix value using a |
| property placeholder. |
| |
| - An <cm:property-placeholder> element which allows you to specify placeholder |
| values using the OSGi Configuration Admin service. In this case, the |
| property is also given the default value of "MyTransform". |
| |
| The routes and configuration are deployed in an OSGi bundle. |
| |
| |
| Prerequisites for Running the Example |
| ------------------------------------- |
| 1. You must have the following installed on your machine: |
| |
| - JDK 1.6 or higher |
| |
| - Maven 2.2.1 or higher (for building) |
| |
| For more information, see the README in the top-level examples |
| directory. |
| |
| 2. Start ServiceMix by running the following command: |
| |
| <servicemix_home>/bin/servicemix (on UNIX) |
| <servicemix_home>\bin\servicemix (on Windows) |
| |
| |
| Running the Example |
| ------------------- |
| You can run the example in two ways: |
| |
| - A. Using a Prebuilt Deployment Bundle: Quick and Easy |
| This option is useful if you want to see the example up and |
| running quickly. |
| |
| - B. Building the Example Bundle Yourself |
| This option is useful if you want to change the example in any way. |
| It tells you how to build and deploy the example. This option might |
| be slower than option A because, if you do not already have the |
| required bundles in your local Maven repository, Maven will have to |
| download the bundles it needs. |
| |
| |
| A. Using a Prebuilt Deployment Bundle: Quick and Easy |
| ----------------------------------------------------- |
| To install and run a prebuilt version of this example, enter the |
| following command in the ServiceMix console: |
| |
| features:install examples-activemq-camel-blueprint |
| |
| This command makes use of the ServiceMix features facility. For more |
| information about the features facility, see the README.txt file in the |
| examples parent directory. |
| |
| Once the example is running, periodic events are routed to the transform |
| method of the MyTransform class and you should see output similar to the |
| following being logged to your console screen: |
| |
| >>>> ActiveMQ-Blueprint-Example set body: Wed Nov 30 15:37:36 NST 2011 |
| >>>> ActiveMQ-Blueprint-Example set body: Wed Nov 30 15:37:38 NST 2011 |
| >>>> ActiveMQ-Blueprint-Example set body: Wed Nov 30 15:37:40 NST 2011 |
| |
| Updating and Redeploying the Properties File from the Console |
| ------------------------------------------------------------- |
| You can update and redeploy the properties file that is used by the |
| properties placeholder in the blueprint.xml from console as follows: |
| |
| 1. Edit the org.apache.servicemix.examples.cfg file, located in the |
| same folder as this README, by changing the value of the "prefix" |
| key to whatever you want (for example, YourTransform). |
| |
| 2. Copy the updated configuration file to your <servicemix_home>/etc |
| directory. You can do this from the ServiceMix console by typing: |
| |
| copy $YOUR_SERVICEMIX_HOME/examples/activemq/activemq-camel-blueprint/org.apache.servicemix.examples.cfg |
| $YOUR_SERVICEMIX_HOME/etc |
| |
| On Windows you need to replace / in the path with \\. |
| |
| Note, the text you are typing might intermingle with the output |
| being logged. This is nothing to worry about. |
| |
| 3. Restart the example bundle: |
| |
| (i) First you must know the bundle ID that ServiceMix has assigned |
| to it. To get the bundle ID, enter the following command in the |
| ServiceMix console: |
| |
| osgi:list |
| |
| At the end of the listing, you should see an entry similar to |
| the following: |
| |
| [158] [Active ] [Started ] [ 60] Apache ServiceMix Example :: ActiveMQ Camel Blueprint (4.4.0) |
| |
| In this case, the bundle ID is 158. |
| |
| (ii) Enter the following command in the ServiceMix console to |
| restart the bundle: |
| |
| osgi:restart <bundle_id> |
| |
| The prefix of the output should change, and the output should look |
| similar to the following: |
| |
| >>>> YourTransform set body: Wed Nov 30 15:37:36 NST 2011 |
| >>>> YourTransform set body: Wed Nov 30 15:37:38 NST 2011 |
| >>>> YourTransform set body: Wed Nov 30 15:37:40 NST 2011 |
| |
| For information on how to stop and/or uninstall the example, see |
| "Stopping and Uninstalling the Example" below. |
| |
| |
| B. Building the Example Bundle Yourself |
| --------------------------------------- |
| To install and run the example where you build the example bundle |
| yourself, complete the following steps: |
| |
| 1. If you have already run the example using the prebuilt version as |
| described above, you must first uninstall the examples-camel-osgi |
| feature by entering the following command in the ServiceMix console: |
| |
| features:uninstall examples-activemq-camel-blueprint |
| |
| 2. Build the example by opening a command prompt, changing directory to |
| examples/activemq/activemq-camel-blueprint (this example) and entering the following Maven |
| command: |
| |
| mvn install |
| |
| If all of the required OSGi bundles are available in your local Maven |
| repository, the example will build very quickly. Otherwise it may |
| take some time for Maven to download everything it needs. |
| |
| The mvn install command builds the example deployment bundle and |
| copies it to your local Maven repository and to the target directory |
| of this example. |
| |
| 3. Install the example by entering the following command in |
| the ServiceMix console: |
| |
| features:install examples-activemq-camel-blueprint |
| |
| It makes use of the ServiceMix features facility. For more information |
| about the features facility, see the README.txt file in the examples |
| parent directory. |
| |
| Once the example is running, periodic events are routed to the |
| transform method of the MyTransform class and you should see output |
| similar to the following being logged to your console screen: |
| |
| >>>> ActiveMQ-Blueprint-Example set body: Wed Nov 30 15:37:36 NST 2011 |
| >>>> ActiveMQ-Blueprint-Example set body: Wed Nov 30 15:37:38 NST 2011 |
| >>>> ActiveMQ-Blueprint-Example set body: Wed Nov 30 15:37:40 NST 2011 |
| |
| Now, if you have not already done so, try updating and redeploying, |
| from the console, the properties file that is used by the properties |
| placeholder in the blueprint.xml file. For details on how to do this, see |
| the "Updating and Redeploying the Properties File from the Console" |
| section above. |
| |
| |
| Stopping and Uninstalling the Example |
| ------------------------------------- |
| To stop the example, enter the following command in the ServiceMix |
| console: |
| |
| osgi:stop <bundle_id> |
| |
| For information on how to find the bundle_id assigned to the example, |
| see step 3 in the "Updating and Redeploying the Properties File |
| from the Console" section above. |
| |
| To uninstall the example, enter one of the following commands in |
| the ServiceMix console: |
| |
| features:uninstall examples-activemq-camel-blueprint |
| |
| or |
| |
| osgi:uninstall <bundle_id> |
| |
| |
| Viewing the Log Entries |
| ----------------------- |
| You can view the entries in the log file in the data/log |
| directory of your ServiceMix installation, or by typing |
| the following command in the ServiceMix console: |
| |
| log:display |