== Load balancing with MINA Example

=== Introduction

This example shows how you can easily use the Camel-MINA component to
design a solution allowing for distributing message workload onto
several servers. These servers are simple TCP/IP servers created by the
Apache MINA framework and run in separate JVMs. The load balancer
pattern of Camel which is used on top of them allows for sending in
Round Robin mode the messages created from a Camel Bean component
alternatively between each server running on localhost:9991 and
localhost:9992.

Within this demo every ten seconds, a Report object is created from the
Camel load balancer server. This object is sent by the Camel load
balancer to a MINA server where the object is then serialized. One of
the two MINA servers (localhost:9991 and localhost:9992) receives the
object and enriches the message by setting the field reply of the Report
object. The reply is sent back by the MINA server to the client, which
then logs the reply on the console.

If any of the two MINA servers is not running, then the load balancer
will automatic failover to the next server.

=== Build

To compile and install the project in your maven repo, execute the
following command on the root of the project

....
mvn clean install
....

=== Run

To run the example, then execute the following command in the respective
folder:

- mina1

....
mvn exec:java -Pmina1
....

- mina2

....
mvn exec:java -Pmina2
....

- loadbalancing

....
mvn exec:java -Ploadbalancer
....

=== 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!
