In February 2013, I was at ApacheCon NA 2013 in Portland, Oregon, USA. My session was named “Systems Integration in the NoSQL Era with Apache Camel”. I showed how to integrate several different NoSQL databases such as MongoDB (document), Neo4j (graph), HBase (column), AWS S3 (key-value), or Hazelcast (in-memory).
Apache Camel is my favorite integration framework on the Java platform due to great DSLs, a huge community, and so many different components. Camel is used by many developers from different companies all over the world. However, most guys are not aware that some really cool tooling is available for Camel, too. Many people ask me about Camel tooling when I do talks at conferences. This is the reason for this short blog post about Camel tooling.
This week, I was at CamelOne 2012 in Boston, organized by FuseSource. Sessions covered several open source projects such as Apache Camel, Apache ServiceMix, Apache ActiveMQ, and Apache CXF. Attendees learned directly from their peers and other industry experts how open source can deliver measurable technical and business benefits to their organizations.
Data exchanges between companies increase a lot. The number of applications, which must be integrated increases, too. The interfaces use different technologies, protocols and data formats. Nevertheless, the integration of these applications shall be modeled in a standardized way, realized efficiently and supported by automatic tests. Such a standard exists with the Enterprise Integration Patterns (EIP) [1], which have become the industry standard for describing, documenting and implementing integration problems. Apache Camel [2] implements the EIPs and offers a standardized, internal domain-specific language (DSL) [3] to integrate applications. This article gives an introduction to Apache Camel including several code examples.
Three lightweight integration frameworks are available in the JVM environment: Spring Integration, Mule ESB and Apache Camel. They implement the well-known Enteprise Integration Patterns (EIP, http://www.eaipatterns.com) and therefore offer a standardized, domain-specific language to integrate applications.
These integration frameworks can be used in almost every integration project within the JVM environment – no matter which technologies, transport protocols or data formats are used. All integration projects can be realized in a consistent way without redundant boilerplate code.
This article compares all three alternatives and discusses their pros and cons.
The integration framework Apache Camel already supports several important cloud services. This article describes the combination of Apache Camel and the Amazon Web Services (AWS) interfaces of Simple Storage Service (S3), Simple Queue Service (SQS) and Simple Notification Service (SNS). Thus, The concept of Infrastructure as a Service (IaaS) is used to access messaging systems and data storage without any need for configuration.
Cloud Computing is the future – if you believe market forecasts from companies such as Gartner. I think so, too. But everybody should be aware that there won’t be one single cloud solution, but several clouds. These clouds will be hosted at different providers, use products and APIs from different vendors and use different concepts (IaaS, PaaS, SaaS). Thus, in the future you will have to integrate these clouds as you integrate applications today.
I really like the integration framework Apache Camel and I also like Scala a lot. This article shows the basics of this combination. It is NO introduction to Apache Camel or Scala. I created a Git project to use it as simple startup for Camel-Scala-Maven projects using just the basic Camel concepts and only a few complex Scala features (i.e. very „Java-friendly“).