A Look Inside FUSE ESB 4: An OSGi-Based Integration Platform
Listing 9 The InsuranceRouter implementation which talks with the file poller and sender.
package com.fusesource.camel;
import org.apache.camel.builder.RouteBuilder;
public class InsuranceRouter extends RouteBuilder {
public void configure() throws Exception {
from("jbi:service:http://fusesource.com/examples/jbicamel/insuranceCamelRouter")
.to("log:showAll?level=info")
.to("jbi:service:http://fusesource.com/examples/jbicamel/insuranceFileService");
}
}
In the from method we can define a JBI service address, which enables JBI components, such as the file poller in this example, to send messages to this InsuranceRouter. Notice that you need to define the fully qualified service name, including the namespace and the service name. In this example, we log the incoming message and sent it to the insuranceFileService JBI service. This is, of course, the file sender we defined in listing 8.
To get this example running, we first need to install several components on the container using the features install command. Execute the following commands to install the necessary components:
features install jbi
features install servicemix-shared
features install servicemix-file
features install servicemix-camel
Now we can build the OSGi bundle. The jbi-camel-test project structure is similar to figure 4, so we can build the OSGi bundle using Maven with the mvn clean install command. In the target directory of the project the jbi-camel-test-1.0.jar is then created, so this file can be copied to the deploy directory of the FUSE ESB 4. Now you can trigger the example by copying the insurance-request.xml message to the insuranceIn directory created in the root of the FUSE ESB installation. This file is moved to the insuranceOut directory and the message content is logged to the FUSE ESB container. You can look at this log file with the log display command in the console.
Conclusion
In this article we’ve shown the new architecture of FUSE ESB 4 and the new capabilities this brings for developers. The new FUSE ESB console provides a nice management tool to interact with the container. And the provisioning component provides a really flexible way to install and remove components from the container, so you can create the ESB you need in your environment. The integration with Maven is really helpful to developers.
We looked at two main deployment models with the Spring XML configuration file and OSGi bundle in several examples. In the examples we showed that the role of Camel is pretty dominant in FUSE ESB 4 and this makes implementing routing logic very easy. You can choose if you want to define this logic with XML configuration or the Java DSL.
And of course we can still use JBI within FUSE ESB 4, so we can reuse the JBI components that are already available in FUSE ESB 3. You can choose to use OSGi bundles with a single configuration file or a service assembly consisting of several service units.
I hope you enjoyed this introduction into FUSE ESB 4 and working with the given examples. I really think the new OSGi bundle deployment model and the ease to configure Camel routes and CXF services is a step forward. FUSE ESB 4 is ready to be used and should ease your life as an integration developer. Keep integrating!
Additional resources
1. Fuse ESB – http://fusesource.com/products/enterprise-servicemix4/
2. ServiceMix 4 – http://servicemix.apache.org/SMX4/index.html
3. Fuse website – http://www.fusesource.com
3. Enterprise Integration Patterns – http://www.enterpriseintegrationpatterns.com
4. Apache Camel – http://activemq.apache.org/camel
5. Download article source code – http://www.esbinaction.com/files/osgi_article.zip
Tijs Rademakers
Tijs is a software architect working for Atos Origin and specializing in enterprise integration. Tijs is the co-author of the Manning book “Open Source ESBs in Action” (http://www.manning.com/rademakers). He speaks frequently at Java conferences about open source enterprise integration projects like ServiceMix, Mule, Apache Synapse and Apache Tuscany.
(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)











Comments
davsclaus replied on Wed, 2009/03/11 - 12:57am
Maybe the description for the Camel SEDA and VM components, could be changed to:
- asynchronous call to another endpoint in the same Camel Context
- asynchronous call to another endpoint in the same JVM The List component is renamed to Browse in Camel 2.0 as a better name what it does, eg being able to browse Messages that have passed it.
--
Claus Ibsen
Apache Camel Committer
Open Source Integration: http://fusesource.com
Blog: http://davsclaus.blogspot.com/
davsclaus replied on Wed, 2009/03/11 - 1:03am
davsclaus replied on Wed, 2009/03/11 - 1:06am
AMQ web console:
http://activemq.apache.org/web-console.html
trademak replied on Wed, 2009/03/11 - 2:24am
ty_780823 replied on Sat, 2009/03/14 - 9:21am
The same greate and wonderful article as "Open-Source ESB In Action"!
I wish that you can contribute more excellent article about enterprise integration.
Especially about the key technoledge points of open source integration(such as spring with mule,spring with servicemix,...).
--- Mike Tang
Sun Glassfish FishCat Contributor
Open Source Integration Fans
Blog: http://mikertang.blogspot.com/
trademak replied on Sat, 2009/03/14 - 11:51am
in response to: ty_780823
Robert Williams replied on Wed, 2009/03/18 - 7:42am
Could not download the article source code at the URL listed.
Could you please make the article source code available
BTW Nice article!
teseling replied on Wed, 2009/03/18 - 8:12am
in response to: rjwil35
trademak replied on Wed, 2009/03/18 - 2:52pm
in response to: teseling
teseling replied on Wed, 2009/03/18 - 5:39pm
in response to: trademak
emad964 replied on Mon, 2009/06/29 - 4:35pm
jiji530 replied on Tue, 2009/06/30 - 12:21am
Sandra Hong replied on Wed, 2009/07/29 - 12:19am
Xiamenlqy replied on Sat, 2009/09/05 - 4:17am