== Widget and Gadget Example - Apache ActiveMQ Artemis

=== Introduction

This example shows the Widget and Gadget use-case from the Enterprise
Integration Patterns book. It is similar to the other Widget and Gadget
example, but uses Apache ActiveMQ Artemis, the next generation message
broker from ActiveMQ.

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 plain Java without using any kind of
_application server_ but just a plain old _Java Main_.

==== Camel component used in this example

* camel-core
* camel-jms

=== Build

You will need to build this example first:

....
mvn install
....

=== Install ActiveMQ Artemis

To automate downloading, unpacking and configuration of Apache ActiveMQ
Artemis with latest defined version a special profile is added. It's
necessary to run following Maven command for do this during example
install:

....
mvn install -P artemis
....

=== Run ActiveMQ Artemis

To start configured ActiveMQ Artemis instance in a shell use:

....
$ target/artemis-instance/bin/artemis run
....

Which startup ActiveMQ Artemis in the foreground and keeps it running
until you hit ctrl+c to shutdown ActiveMQ Artemis.

=== Run Camel

The Camel application connects to the message broker on url:
`+tcp://localhost:61616+`. The url can be changed in the
`+ArtemisMain.java+` source code.

When the ActiveMQ Artemis 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, with an output similar to:

....
2019-04-26 11:04:27,154 [sumer[newOrder]] INFO  gadget                         - Exchange[ExchangePattern: InOnly, BodyType: String, Body: ...<order>  <customerId>456</customerId>  <product>gadget</product>  <amount>3</amount></order>]
2019-04-26 11:04:27,162 [sumer[newOrder]] INFO  widget                         - Exchange[ExchangePattern: InOnly, BodyType: String, Body: ...<order>  <customerId>123</customerId>  <product>widget</product>  <amount>2</amount></order>]
....

You can access the ActiveMQ Artemis web console using
http://localhost:8161/console and then browse the queues. The user name
and password for accessing the console are setup when creating the
broker instance and are, in this example, set to `+admin+` and `+admin+`
respectively.

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/java/org/apache/camel/example/ArtemisMain.java+` 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!
