Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3

...

This example shows how to use Camel to implement the EIP's loan broker example.

The example has two versions,one is queue for JMS, one for webservice one.
The JMS version which leverages the message queue to combinate connect the credit agency and bank loan quote processing and processors together, it just uses the InOnly exchage exchange pattern to handle the message asynchronously;
the other is web service webservice version which shows how to integrate the credit agency and bank web services together and it uses by using the InOut exchange pattern synchronously.

...

Example with message queue (JMS)

The queue version of loan broker is based on the Camelcamel-JMS jms component, and it shows how to using the message queue to connect the different service models (such as the credit agency , and banks).

The example should run if you type

Code Block

mvn exec:java -PQueue.LoanBroker

...



mvn exec:java -PQueue.Client

To stop the example hit ctrl + c

let's take a look how this service modules are put together.

Wiki Markup
{snippet:id=dsl|lang=java|url=activemq/camel/trunk/examples/camel-example-loan-broker/src/main/java/org/apache/camel/loanbroker/queue/version/LoanBroker.java}

The CreditAgency , Bank and Translator are all the implementation of Processor interface. We implement the business logicals in the void process(Exchange exchange) method.

CreditAgency

Wiki Markup
{snippet:id=creditAgency|lang=java|url=activemq/camel/trunk/examples/camel-example-loan-broker/src/main/java/org/apache/camel/loanbroker/queue/version/CreditAgency.java}

Bank

Wiki Markup
{snippet:id=bank|lang=java|url=activemq/camel/trunk/examples/camel-example-loan-broker/src/main/java/org/apache/camel/loanbroker/queue/version/Bank.java}

Translator

Wiki Markup
{snippet:id=translator|lang=java|url=activemq/camel/trunk/examples/camel-example-loan-broker/src/main/java/org/apache/camel/loanbroker/queue/version/Translator.java}

You may found we set a custom aggregation strategy to find out the lowest loan rate from bank response message.

Wiki Markup
{snippet:id=aggregation|lang=java|url=activemq/camel/trunk/examples/camel-example-loan-broker/src/main/java/org/apache/camel/loanbroker/queue/version/BankResponseAggregationStrategy.java}

We start the loan broker after we start up the ActiveMq broker and the connection factory of Camel-JMS component.

Wiki Markup
{snippet:id=starting|lang=java|url=activemq/camel/trunk/examples/camel-example-loan-broker/src/main/java/org/apache/camel/loanbroker/queue/version/LoanBroker.java}

Now we can send the request from client

Wiki Markup
{snippet:id=sending|lang=java|url=activemq/camel/trunk/examples/camel-example-loan-broker/src/main/java/org/apache/camel/loanbroker/queue/version/Client.java}

Here is how we pull the response message

...

Example with web service

The web service version of loan broker is based on the camel-cxf component which can produce and consume the SOAP message on the wire. It uses the InOut Message exchange pattern, when the client send out the message to the router , it can get the response message back from the same endpoint.
When we send out the quote message to the three different banks, we could choice to call the bank service one by one or send out the message parallelly(one request thread per request).
You can compare the response time after you run the sample.

The example should run if you type

Code Block

mvn exec:java -PWS.LoanBroker

mvn exec:java -PWS.Client

To stop the example hit ctrl + c