blob: 51b6028a424b93dfc8bc1839d87c23032ab73f0c [file] [log] [blame]
== Widget and Gadget Example - XML
=== Introduction
This example shows the Widget and Gadget use-case from the Enterprise
Integration Patterns book.
The example provides a simple order system, where incoming orders, is
routed to either a widget or gadget inventory system, for further
processing. The example uses the most famous pattern from the EIP book,
which is the Content Based Router.
The example is implemented in Spring XML only without using any kind of
_application server_ but or Java code.
==== Camel component used in this example
* camel-core
* camel-spring
* camel-jms
* camel-activemq
=== Build
You will need to build this example first:
....
mvn install
....
=== Run
This example requires an existing Apache ActiveMQ broker running.
To setup and run Apache ActiveMQ then download it from the
http://activemq.apache.org/[ActiveMQ website].
Then extract the download such as (the .tar)
....
tar xf ~/Downloads/apache-activemq-5.13.0-bin.tar.gz
....
Then the broker can be started with
....
cd apache-activemq-5.13.0
bin/activemq console
....
And then Broker is running (you can press ctrl+c in the shell to stop
the broker).
The Camel application connects to the remote broker on url:
`+tcp://localhost:61616+`. The url can be changed in the `+widget.xml+`
source code.
When the ActiveMQ broker is running, then you can run this example
using:
....
mvn compile exec:java
....
When the Camel application runs, you should see 2 orders being processed
and logged to the console, such as:
....
2016-01-11 12:53:53,978 [sumer[newOrder]] INFO widget - Exchange[ExchangePattern: InOnly, BodyType: byte[], Body: <order> <customerId>123</customerId> <product>widget</product> <amount>2</amount></order>]
2016-01-11 12:53:54,005 [sumer[newOrder]] INFO gadget - Exchange[ExchangePattern: InOnly, BodyType: byte[], Body: <order> <customerId>456</customerId> <product>gadget</product> <amount>3</amount></order>]
....
You can access the ActiveMQ web console using
http://localhost:8161/admin/ and then browse the queues. You should see
the three queues:
* newOrder
* widget
* gadget
The Camel application can be stopped pressing ctrl+c in the shell.
=== Configuration
The Camel application is configured in the
`+src/main/resources/META-INF/spring/widget.xml+` file.
=== Help and contributions
If you hit any problem using Camel or have some feedback, then please
https://camel.apache.org/support.html[let us know].
We also love contributors, so
https://camel.apache.org/contributing.html[get involved] :-)
The Camel riders!