Apache Camel 3.0.0 is out today! Why is this a big deal? Well, it's the first major Camel version released in TEN years. Yes, really :-) Camel 2 was released on August 25, 2009!
Apache Camel 2.x remains a rock solid integration framework used all around the world and will certainly live on for many years to come. But, for some changes (and to stick with semantic versioning) we really needed a major version bump. You can imagine over 10 years a project can accumulate a lot of "would be nice to do IF we could break API..." type issues :-) But don't be scared, the team managed to keep the migration as painless as possible.
So what did change? Claus has a nice diagram of the major changes but there was definitely a focus on making camel-core smaller by breaking it up into modules (it was getting massive and size is becoming increasingly important in a cloud native world) and switching to a more performant reactive routing engine. All told, since last year when we branched for Camel 3 development, over 1000 issues were resolved. It was a busy year for all involved!
Next up are the releases of the other projects in the Camel ecosystem: Camel-K (run Camel routes directly on Kubernetes) and Camel-Quarkus (Camel components as Quarkus extensions). Stay tuned.
Thanks and congratulations to all involved in the release! Cheers!
Showing posts with label Open Source. Show all posts
Showing posts with label Open Source. Show all posts
Thursday, November 28, 2019
Thursday, October 6, 2016
JBoss Fuse 6.3 is out!
JBoss Fuse 6.3 just went GA, get it while it's hot :-) With this release we didn't do anything too crazy and had a big focus on stability of the platform and bug fixes. In fact there are thousands of bug fixes over Fuse 6.2. We do still provide a few notable project upgrades however:
As well as API updates:
So those are some bigger things to consider when upgrading your projects to Fuse 6.3. A full migration guide is available as well. A lot of the brand spanking new stuff in this release comes in via Camel. For instance, you may find some of the new Camel components useful:
Another change this time is the Maven repo. Previously you may have used repository.jboss.org or repo.fusesource.com to download Fuse artifacts. With this release, we have migrated to https://maven.repository.redhat.com/ga.
You will notice too that the Fuse Eclipse tooling has undergone a visual makeover. Look at this new flow style for Camel routes:
Pretty sweet :-) Lars goes over other changes in more detail here.
Oh and you can download everything from here:
http://developers.redhat.com/products/fuse/download
The site updates are still in progress (prolly another few hours to go) so make sure to click the 6.3.0 link and not the big red download button which still points to 6.2.0 :-)
Happy integrating!
- Apache Camel 2.17
- Apache CXF 3.1
- Jetty 9
As well as API updates:
- JMS 2.0
- You may think this is a crazy big upgrade for a minor version but it's not so bad :-) We only updated Fuse to use the latest JMS spec JAR, which is version 2.0. In the broker we stick to using the JMS v1 compatible APIs so nothing breaks. We needed to do this so Fuse could connect to JMS v2 only brokers like WebSphere MQ 8. Support for JMS v2 features will likely be in Fuse 7.
- Servlet 3.1
So those are some bigger things to consider when upgrading your projects to Fuse 6.3. A full migration guide is available as well. A lot of the brand spanking new stuff in this release comes in via Camel. For instance, you may find some of the new Camel components useful:
- camel-paho - For MQTT messaging using Eclipse Paho client
- camel-pdf - For creating PDF documents
- camel-slack - allows you to connect to an instance of Slack and delivers a message contained in the message body via a pre established Slack incoming webhook.
- camel-jolt - for JSON to JSON transformation
- camel-aws-ec2 - Component providing support to Amazon Web Services EC2
- camel-undertow - To use Undertow as HTTP server or client.
- camel-git - A generic Git component
- camel-sjms - SJMS Batch is a specialized component for highly performant, transactional batch consumption from a JMS queue
- camel-http-common - A common base component for reuse among all the various HTTP components we have.
- camel-swagger-java - A pure Java based Swagger component.
- camel-elsql - An extended SQL Component that uses ElSql for defining SQL queries
- camel-jbpm - Sends messages through kie-remote-client API to jBPM.
- camel-aws - AWS kinesis streams component added
- camel-aws - DynamoDB streams component added
- camel-braintree - for interacting with Braintree Payments.
- camel-test-cdi - ease testing of Camel CDI applications
- camel-etcd - Integrating Camel with Etcd key value store
- camel-kubernetes - Integrates Camel with Kubernetes
- camel-jcache - support JCache / JSR107 caching.
- camel-nats - for interacting with Nats messaging platform
- camel-servicenow - for interacting with ServiceNow
- camel-spark - bridges Apache Spark computations with Camel endpoints
- camel-sql - Now supports calling stored procedures using the new sql-stored component.
Another change this time is the Maven repo. Previously you may have used repository.jboss.org or repo.fusesource.com to download Fuse artifacts. With this release, we have migrated to https://maven.repository.redhat.com/ga.
You will notice too that the Fuse Eclipse tooling has undergone a visual makeover. Look at this new flow style for Camel routes:
Pretty sweet :-) Lars goes over other changes in more detail here.
Oh and you can download everything from here:
http://developers.redhat.com/products/fuse/download
The site updates are still in progress (prolly another few hours to go) so make sure to click the 6.3.0 link and not the big red download button which still points to 6.2.0 :-)
Happy integrating!
Tuesday, June 23, 2015
JBoss Fuse 6.2 is out!
Hot off the presses today is JBoss Fuse 6.2. For those who don't know, Fuse is an open source ESB focused on making integration easier. It is made up of a bunch of popular opensource projects like Apache Camel, Apache CXF, Apache ActiveMQ, Apache Karaf, HawtIO, and Fabric8.
OK, so what's new since Fuse 6.1?
* camel-ahc-ws
* camel-atmosphere-websocket
* camel-beanstalk
* camel-box
* camel-cassandraql
* camel-chunk
* camel-docker
* camel-dozer
* camel-dropbox
* camel-github
* camel-google-calendar
* camel-google-drive
* camel-google-mail
* camel-gora
* camel-hdfs2
* camel-hipchat
* camel-jgroups
* camel-jira
* camel-kafka
* camel-kura
* camel-linkedin
* camel-metrics
* camel-netty4
* camel-netty4-http
* camel-olingo2
* camel-openshift
* camel-optaplanner
* camel-pgevent
* camel-rest
* camel-sap
* camel-schematron
* camel-scr
* camel-spark-rest
* camel-splunk
* camel-spring-boot
* camel-swagger
* camel-swf
* camel-test-spring40
* scheduler
Another notable addition is the REST DSL which allows you to easily define REST services within a Camel route.
Something really cool for folks who like to write Camel components is the API component framework. This takes a lot of the drudgery out of creating Camel components that mainly just call 3rd party APIs. The box, linkedin, google-*, and salesforce components were all created with this tool in a fraction of the time. Check it out!
Role based access control (RBAC) support is here!
Back in Fuse 6.1 days and before you had one user that could do everything. Obviously this doesn't fit for all deployments. Now we have the same set of roles as JBoss EAP: Monitor, Operator, Maintainer, Deployer, Auditor, Administrator, and SuperUser. You can selectively give access to Karaf shell commands and JMX MBeans.
JBoss Fuse Tooling - Usability Improvements from JBoss Developer on Vimeo.
Another cool thing was sneaked into the Eclipse tooling as well: a data mapper! While this is still in the early days of development (and tech preview for 6.2), it is already looking quite nice. Here's a video of it in action!
Fuse 6.2 - Data Transformation Overview from JBoss Developer on Vimeo.
- RBAC support
- Camel metrics
- JMS message searching and editing
- Improved Camel tracer and debugger
- new AMQP clients (JMS, C++, python)
- Full support for JAX-RS 2.0
- New streaming WS-Security impl
- Netty HTTP server/client
- Websocket transport
OK, so what's new since Fuse 6.1?
Camel 2.15
Camel (my fav project ;-) has had quite a stable API for years now. Most of the change comes from new components being added to connect to all sorts of new things. This release was no exception as there are almost 40 new components to choose from:* camel-ahc-ws
* camel-atmosphere-websocket
* camel-beanstalk
* camel-box
* camel-cassandraql
* camel-chunk
* camel-docker
* camel-dozer
* camel-dropbox
* camel-github
* camel-google-calendar
* camel-google-drive
* camel-google-mail
* camel-gora
* camel-hdfs2
* camel-hipchat
* camel-jgroups
* camel-jira
* camel-kafka
* camel-kura
* camel-linkedin
* camel-metrics
* camel-netty4
* camel-netty4-http
* camel-olingo2
* camel-openshift
* camel-optaplanner
* camel-pgevent
* camel-rest
* camel-sap
* camel-schematron
* camel-scr
* camel-spark-rest
* camel-splunk
* camel-spring-boot
* camel-swagger
* camel-swf
* camel-test-spring40
* scheduler
Another notable addition is the REST DSL which allows you to easily define REST services within a Camel route.
Something really cool for folks who like to write Camel components is the API component framework. This takes a lot of the drudgery out of creating Camel components that mainly just call 3rd party APIs. The box, linkedin, google-*, and salesforce components were all created with this tool in a fraction of the time. Check it out!
Karaf 2.4
We still haven't bit the bullet on moving off the very stable Karaf 2.x line - it just works. Still, it doesn't mean there were no new features this time. Not a flashy change but a biggy:Role based access control (RBAC) support is here!
Back in Fuse 6.1 days and before you had one user that could do everything. Obviously this doesn't fit for all deployments. Now we have the same set of roles as JBoss EAP: Monitor, Operator, Maintainer, Deployer, Auditor, Administrator, and SuperUser. You can selectively give access to Karaf shell commands and JMX MBeans.
Fabric8 Insight
Insight is a centralized logging and metrics collection facility for fabric8 clusters. We introduced it as a tech preview back in 6.1 but now it is fully GA. The backend is implemented with elastic search and there is a nice console accessible within hawtio. You'll have to try it out to fully appreciate the difference a centralized logging + console makes in tracking down problems in a big cluster.Eclipse tooling updates
The tooling went through a major overhaul. Lars was on a mission to make your life easier as shown in the video below:JBoss Fuse Tooling - Usability Improvements from JBoss Developer on Vimeo.
Another cool thing was sneaked into the Eclipse tooling as well: a data mapper! While this is still in the early days of development (and tech preview for 6.2), it is already looking quite nice. Here's a video of it in action!
Fuse 6.2 - Data Transformation Overview from JBoss Developer on Vimeo.
HawtIO 1.4
A lot of little things round out the feature set in this new version of HawtIO. Some highlights:- RBAC support
- Camel metrics
- JMS message searching and editing
- Improved Camel tracer and debugger
Fuse integration package
A separate download from the Fuse distro, the integration pack provides glue for interacting with JBoss BRMS & BPMS. Yes, you can now officially use these products together in a supported way :-)
ActiveMQ 5.11
- Hardened MQTT/AMQP/LevelDB support- new AMQP clients (JMS, C++, python)
CXF 3
Version 3 brings a lot of changes. Some highlights:- Full support for JAX-RS 2.0
- New streaming WS-Security impl
- Netty HTTP server/client
- Websocket transport
Switchyard
Another big change for this release is that Switchyard is now part of JBoss Fuse. Up until now it was a separate product at JBoss. Now that Switchyard runs on Karaf you can load it in Fuse like any other feature.
What is Switchyard? It's a layer above Camel essentially, focused on building structured, maintainable services and applications using the concepts and best practices of SOA. Very useful if you have a set of well defined services with contracts and you need to route between them.
Switchyard in Fuse 6.2 is tech preview right now but we plan on full GA support in a not too distant release.
OK, that was a mouthful and I only skimmed the surface :-) To find out more go to:
Wednesday, April 18, 2012
Getting Started with Fuse ESB Webinar
Last week FuseSource announced two new enterprise products: Fuse ESB Enterprise and Fuse MQ Enterprise. Both of these are currently in beta so this of course means that you can download and try them out for yourself :)
If you want to learn more about how to get started with the new Fuse ESB Enterprise product, I'm giving a webinar next Tuesday April 24th at 11:00am EDT. You can register with the link below:
Hope to see you (virtually) there!
If you want to learn more about how to get started with the new Fuse ESB Enterprise product, I'm giving a webinar next Tuesday April 24th at 11:00am EDT. You can register with the link below:
So, what's covered? I'll be going over all the new stuff that is in this release like Fuse Fabric and FAB (Rob Davies posted some great teasers last week), but also features that Apache ServiceMix users know and love: interactive shell & OSGi container from Apache Karaf, integration flows with Apache Camel, web services with Apache CXF, and reliable messaging with Apache ActiveMQ. Basically everything you need to get started in your integration projects.
Hope to see you (virtually) there!
Friday, January 20, 2012
CamelOne 2012 CFP is Open

Last year's CamelOne event went so well that FuseSource is doing another one this year. Awesome news because CamelOne 2011 was a blast! :) IMO smaller, more focused conferences like CamelOne are more beneficial than the big "all-inclusive" conferences. It is still very early in the planning so speaking slots are still available. Registration details are on the CamelOne 2012 site.
Cheers to another win for the Apache Camel community!
Monday, November 14, 2011
ApacheCon NA 2011 - Geeky Paradise!
ApacheCon NA this year was in beautiful Vancouver, BC. This conference, besides being my first ApacheCon, was really different from my usual trips since it was in my home country :) No customs and crazy exchange rates FTW! I think there were over 400 attendees so it was a pretty good turnout IMO. Lots of geeky chats, hacking and beverages made for a great time. The sessions were great too of course. I wanted to blog about my trip not because anyone finds my travels interesting :) but because the topics are really cool and are probably not widely known.
Fuse Fabric + Apache ZooKeeper
I want to start off with my colleague Guillaume Nodet who spoke about how Fuse Fabric is created on top of Apache ZooKeeper and allows you to provision ActiveMQ, CXF, and Camel applications into a cloud of ServiceMix or Karaf instances. Very cool presentation overall but I was really quite excited by the prospect of upgrading a whole cluster of ServiceMix or Karaf instances to a new version of Camel. Right now, to upgrade at runtime you have to either update every bundle of Camel separately or uninstall + reinstall the new version (not very pretty).
Fabric also has an super fast implementation of Distributed OSGi, which allows you to invoke OSGi services hosted in remote nodes. When on the same machine it can run at 25,000 MPS on pretty minimal hardware!
This wasn't in the talk (cause it is closed source), but I also heard that Fuse IDE has a nice GUI for interacting with Fabric now too :)
Apache TomEE
I heard a bit about the TomEE project recently and thought it would be good to hear from the main guy David Blevins what it is all about. In short, at the Apache TomEE project they are creating a Java EE 6 certified server based on Apache Tomcat. They are doing this because they think that the EE spec is actually not bloated as people say (yeah, its just an API after-all) and that the bloatedness comes from the implementation of various vendors. So, they wanted to make a lean mean EE server. The other main point about TomEE is that it is built on top of Apache Tomcat, which is the most widely used web app server.
On the bit about it being lean, apparently to run the entire EE TCK (that is the certification tests), TomEE only needed the default heap size of 64MB... now, I wonder what the other EE app servers required?
Apache ACE
Jean-Baptiste Onofre gave a great demo of Apache ACE in action. Essentially ACE allows you to provision your OSGi packaged apps into Karaf or ServiceMix instances. I thought it has a pretty slick web interface where you can centrally manage what Karaf nodes have what bundles, etc. Very cool stuff!
Apache ServiceMix + Camel
The ServiceMix project came up numerous times in presentations and offline talks. In short ServiceMix 5 will bring large changes to ServiceMix. Not as large as the gap from version 3 to 4 (where we switched from JBI to OSGi) but still big changes. Some include:
- Removal of JBI layer
- Instead of the NMR as the central solution for routing, use Camel
- Move some NMR features to Camel (audit, events, tracing, etc...)
- Add CXF console shell
- and the many many new features coming with Karaf 3...
Version 5 is especially exciting for me because of the implications for Camel. Right now, Camel hasn't changed its architecture much lately IMO; it just keeps getting faster, more stable, and with an ever growing number of components - the best changes for a widely used framework. There haven't been as many improvements to Camel operating at the container level though. We are kinda limited by what the Camel project guidelines are; Camel is a framework, not an ESB. So ServiceMix has no such restriction (it is an ESB!) so version 5 has the major goal of being the best home for your Camel applications and as such will have many improvements for running Camel. Nothing is 100% decided yet so if you have ideas, let the ServiceMix community know before version 5 development starts :)
OK, so there were many more talks as well but these were the ones I wanted to talk about :) Overall ApacheCon was one of the coolest conferences I've been too. Very happy to have hung out with some old friends and met some "IRC friends" that I've been wanting to meet for years.
Oh yeah, and the next ApacheCon will be November 2012 in Germany... sounds fun already!
Thursday, September 29, 2011
Free open source talks this October
There are a few things happening in October that'd I'd like to draw your attention to.
October 11th
We're cohosting a Fuse community day with Skills Matter in London, England. Rob, James, and Claus will be giving several talks on Apache Camel, ServiceMix, Karaf, and ActiveMQ. They'll also talk about some of the products that have come out at FuseSource this year like Fuse IDE and Fuse Fabric. As usual with Fuse community days, several customers will be joining to tell how they use these open source projects in real world applications, which IMHO is usually the most interesting :) Logica and Apex Networks will be talking at this event.
More details about this are here: http://skillsmatter.com/event/soa-rest/fusesource-community-day-2011/js-2735
October 13th
This Fuse community day is in Paris, France. Much the same talks as at the London event with Atos Worldline and Capgemini joining to share their expereince using Apache and FuseSource open source software in real world applications.
More details here: http://tiny.cc/noqh1
October 18th
Last but not least ;) I'll be presenting a webinar on how to get started with Apache ServiceMix. In this webinar I'll take a tour of the many features shipped with ServiceMix. I'll stick with the getting started theme here too - it won't be a deep dive into anything so hopefully it won't go over anyone's heads :) For most of the talk though I'll head to the IDE and see how to build out a ServiceMix application that takes advantage of the main compoenents like: integration flows with Apache Camel, web services with Apache CXF, and reliable messaging with Apache ActiveMQ.
If you are interested, you can register here: https://fusesource.webex.com/fusesource/onstage/g.php?t=a&d=716654083&Sourceid=web
Thursday, March 31, 2011
Speaking at CamelOne and Security BSides
I'm heading out to do a couple of talks on Apache Camel in the coming months and figured I should get the word out! First off, is CamelOne:
So I'm really excited about CamelOne. It is a conference put off by FuseSource for users of Apache open source integration and messaging projects. So there will be lots of talks on Apache Camel, ServiceMix, ActiveMQ and CXF by the folks who created those projects and also users who push the limits of what the software can do. Great stuff.
Gregor Hohpe, author of Enterprise Integration Patterns, will also be giving a keynote about the Past, Present and Future of Enterprise Integration Patterns.
Given most of the time I see folks running Camel applications on top of ServiceMix or Karaf, I will be giving a talk entitled: Getting the most out of your ServiceMix deployment of Camel. A brief description of the talk:
Security BSides is an "unconference" style gathering here in St. John's. A brief description from the official site:
I'm going be giving a talk on How to Secure your Apache Camel Deployment. A brief abstract of the talk:
If you are in the area, please drop by - also, registration is free :)
CamelOne - May 24-26

Gregor Hohpe, author of Enterprise Integration Patterns, will also be giving a keynote about the Past, Present and Future of Enterprise Integration Patterns.
Given most of the time I see folks running Camel applications on top of ServiceMix or Karaf, I will be giving a talk entitled: Getting the most out of your ServiceMix deployment of Camel. A brief description of the talk:
Apache Camel was designed to be deployable nearly anywhere; you have your choice of standalone in a JVM, Tomcat, J2EE, ActiveMQ, Spring, OSGi, and more. One particularly suitable deployment option is an OSGi container like Apache ServiceMix. In this session, Jon will show you how to take advantage of the many features that ServiceMix brings to the table and also how to best design your Camel applications to get the most out of OSGi.I urge anyone who uses Camel, ServiceMix, ActiveMQ or CXF and can afford the trip to attend CamelOne. It's going to be a blast and it would really be great to chat with fellow community members about these projects.
Security BSides - June 10

An eclectic gathering of infosec people to hear awesome talks and have outrageously fun discussions! Our mission is to provide an inclusive, open environment for the sharing and collaborative discourse on topics that most interest you.
I'm going be giving a talk on How to Secure your Apache Camel Deployment. A brief abstract of the talk:
Apache Camel is an open source Java framework that focuses on making integration easier and more accessible to developers. It does this by providing: concrete implementations of all the widely used Enterprise Integration Patterns (EIPs), connectivity to a great variety of transports and APIs, and an easy to use Domain Specific Language (DSL) to wire EIPs and transports together to form routes.
Interacting with secure services and also hosting secure services is essential in most integration projects. In this session, Jon will go over the four categories of security features in Camel, which include securing: routes, message payload, endpoints, and configuration.
If you are in the area, please drop by - also, registration is free :)
Friday, August 27, 2010
Apache Camel Webinars at FuseSource
As Claus just posted, we are doing two webinars next month on Apache Camel at FuseSource.
- September 8th - Claus will give an introduction to Apache Camel including: core concepts, EIPs, components, and the community.
- September 16th - I will go over deployment options for Camel including: embedded Java, Spring, ActiveMQ, ServiceMix (OSGi) and web app. This will include a live demonstration of deploying a Camel application in ServiceMix.
Monday, July 12, 2010
Quick load testing with the Camel Dataset component
A pretty common thing I have to do is investigate issues that only occur when load is put on a system. Instead of hand coding message producers to pummel a Camel route or message broker, I've been using the Camel dataset component. I'm not sure many are aware of it but its an incredibly useful and easy to use tool.
For demonstration's sake let say we want to send 10000 messages in a tight loop to a ActiveMQ broker started on the local machine. First we download ActiveMQ
http://activemq.apache.org/activemq-532-release.html
and then start up ActiveMQ
bin/activemq
Now we set up a simple Camel app that uses the Dataset component in a Spring XML file (source available here):
So we first create a SimpleDataSet #1 with a size of 10000. This means that 10000 messages will be sent when we use this is the route. We also need to configure the connection to the ActiveMQ broker #2 that we will be pummeling. Finally, we have a Camel route that sends 10000 messages to a queue named myQueue #3. We also have another route that consumes from the same queue and dumps the message contents to the /tmp directory. You can run this now by issuing mvn camel:run on the command line. You will see output something like:
So this allowed us to quickly (1) set up a producer which sent 10000 messages, (2) consume those messages from the same queue and (3) report what the throughput was during the test.
The source for this example is available at http://people.apache.org/~janstey/blog_stuff/camel_dataset/dataset-test.zip
For more information on the dataset component, see the official Apache Camel documentation at http://camel.apache.org/dataset.html
For demonstration's sake let say we want to send 10000 messages in a tight loop to a ActiveMQ broker started on the local machine. First we download ActiveMQ
http://activemq.apache.org/activemq-532-release.html
and then start up ActiveMQ
bin/activemq
Now we set up a simple Camel app that uses the Dataset component in a Spring XML file (source available here):
#1
<bean id="myDataSet" class="org.apache.camel.component.dataset.SimpleDataSet">
<property name="size" value="10000"/>
</bean>
#2
<bean id="activemq" class="org.apache.activemq.camel.component.ActiveMQComponent">
<property name="brokerURL" value="tcp://localhost:61616"/>
</bean>
<camelContext xmlns="http://camel.apache.org/schema/spring">
#3
<route>
<from uri="dataset:myDataSet?produceDelay=-1"/>
<to uri="activemq:myQueue"/>
</route>
#4
<route>
<from uri="activemq:myQueue"/>
<to uri="file:/tmp"/>
</route>
</camelContext>
So we first create a SimpleDataSet #1 with a size of 10000. This means that 10000 messages will be sent when we use this is the route. We also need to configure the connection to the ActiveMQ broker #2 that we will be pummeling. Finally, we have a Camel route that sends 10000 messages to a queue named myQueue #3. We also have another route that consumes from the same queue and dumps the message contents to the /tmp directory. You can run this now by issuing mvn camel:run on the command line. You will see output something like:
[pache.camel.spring.Main.main()] DefaultCamelContext INFO Apache Camel 2.3.0 (CamelContext: camelContext) started in 1155 millis
[et://myDataSet?produceDelay=-1] et://myDataSet?produceDelay=-1 INFO Sent: 2000 messages so far. Last group took: 2120 millis which is: 943.396 messages per second. average: 943.396
[et://myDataSet?produceDelay=-1] et://myDataSet?produceDelay=-1 INFO Sent: 4000 messages so far. Last group took: 1867 millis which is: 1,071.237 messages per second. average: 1,003.261
[et://myDataSet?produceDelay=-1] et://myDataSet?produceDelay=-1 INFO Sent: 6000 messages so far. Last group took: 2014 millis which is: 993.049 messages per second. average: 999.833
[et://myDataSet?produceDelay=-1] et://myDataSet?produceDelay=-1 INFO Sent: 8000 messages so far. Last group took: 2399 millis which is: 833.681 messages per second. average: 952.381
[et://myDataSet?produceDelay=-1] et://myDataSet?produceDelay=-1 INFO Sent: 10000 messages so far. Last group took: 1741 millis which is: 1,148.765 messages per second. average: 986.096
So this allowed us to quickly (1) set up a producer which sent 10000 messages, (2) consume those messages from the same queue and (3) report what the throughput was during the test.
The source for this example is available at http://people.apache.org/~janstey/blog_stuff/camel_dataset/dataset-test.zip
For more information on the dataset component, see the official Apache Camel documentation at http://camel.apache.org/dataset.html
Thursday, April 1, 2010
Understanding Camel components
We've updated Camel in Action today with 3 new chapters. That brings the total to 11 out of 13 chapters, which means we are getting close :)
One of the chapters is all about Camel components. The list of components in Camel has really exploded over the last few years. Camel ships with 76 components right now and there are dozens more available separately from other community sites. I mean, when presented with most integration scenarios we can easily say
"There's a Camel component for that."
So out of these components, which ones did we choose to cover? To make the content fit into one chapter we covered 11 components in 7 sections:
Why these components? Well, we felt that these were the most widely used and thus essential knowledge for any Camel user. Of course, other components are covered elsewhere in the book but not in as much detail as these.
Feel free to check out chapter 7 Understanding components in the latest book update or browse the chapters examples.
One of the chapters is all about Camel components. The list of components in Camel has really exploded over the last few years. Camel ships with 76 components right now and there are dozens more available separately from other community sites. I mean, when presented with most integration scenarios we can easily say
"There's a Camel component for that."
So out of these components, which ones did we choose to cover? To make the content fit into one chapter we covered 11 components in 7 sections:
Section | Components covered |
---|---|
Working with files | file, ftp |
Asynchronous Messaging using the JMS component | jms |
Web Services and the CXF Component | cxf |
Networking with the MINA component | mina |
Working with databases | jdbc, jpa |
In-memory asynchronous messaging | seda, vm |
Automating tasks | timer, quartz |
Why these components? Well, we felt that these were the most widely used and thus essential knowledge for any Camel user. Of course, other components are covered elsewhere in the book but not in as much detail as these.
Feel free to check out chapter 7 Understanding components in the latest book update or browse the chapters examples.
Thursday, October 22, 2009
Camel in Action
As Claus just announced, we are writing a book with Hadrian on Apache Camel entitled "Camel in Action".

There has been a real need for such a book for a long time. We're hoping to fill the gap in the current documentation thats out there and provide a go to resource for new and experienced users alike.
A neat thing about writing at Manning is that readers can see the book as its being written (in all its rough glory :)) and provide feedback directly to us. Also its early enough in the writing process so that you could have real influence on what topics get included!
Feel free to check out the book and forums.

There has been a real need for such a book for a long time. We're hoping to fill the gap in the current documentation thats out there and provide a go to resource for new and experienced users alike.
A neat thing about writing at Manning is that readers can see the book as its being written (in all its rough glory :)) and provide feedback directly to us. Also its early enough in the writing process so that you could have real influence on what topics get included!
Feel free to check out the book and forums.
Monday, May 11, 2009
Introduction to the Open eHealth Integration Platform
Martin Krasser has just posted an excellent article on the Open eHealth Integration Platform (IPF). The IPF is essentially an extension of Apache Camel for the healthcare domain. Where Camel focuses on providing an easy to use domain specific language (DSL) for enterprise integration, the IPF adds DSL terms from the healthcare domain. Go check it out!
Introduction to the Open eHealth Integration Platform
Introduction to the Open eHealth Integration Platform
Monday, March 30, 2009
Apache Camel Refcard at DZone

Fellow Camel guru Claus Ibsen has created a lovely Refcard for DZone. From the description
This Refcard provides you with eleven of the most essential patterns that anyone working with integration must know. This Refcard is targeted for software developers and enterprise architects, but anyone in the integration space can benefit as well.
Go check it out!
Enterprise Integration Patterns with Apache Camel
Monday, March 23, 2009
Apache Camel: Integration Nirvana

Apache Camel: Integration Nirvana
Monday, February 23, 2009
Camel User Guide
For those never-read-anything-besides-physical-paper people, the Apache Camel user guide in PDF form may interest you. Be warned for printing it though as its quite large :)
Apache Camel User Guide version 1.6.0
This is really the closest thing we have to a book on Camel. Hoping that will change in the near future!
Another great source for nicely printable Camel documentation is FUSE Source. Check it out here.
Apache Camel User Guide version 1.6.0
This is really the closest thing we have to a book on Camel. Hoping that will change in the near future!
Another great source for nicely printable Camel documentation is FUSE Source. Check it out here.
Tuesday, February 17, 2009
Apache Camel 1.6.0 Released!

The Camel team is pleased to announce the release of Apache Camel 1.6.0. Get it while its hot!
Unix/Linux/Cygwin Distribution
Windows Distribution
We've fixed 169 issues in this release so its a worthwhile upgrade for all Camel users. You can find the full list of changes here.
Enjoy!
Monday, February 16, 2009
Apache Camel... more EIPs than you can shake a stick at!
For those of you who don't know already, one of Apache Camel's main themes is to make complex Enterprise Integration Patterns (EIPs) accessible to the everyday Java developer. We have an extensive catalog of EIPs that we support and recently I added a few more.
You can try any of these patterns out using Apache Camel / FUSE Mediation Router 1.5 and onward.
![]() | Composed Message Processor | How can you maintain the overall message flow when processing a message consisting of multiple elements, each of which may require different processing? |
![]() | Claim Check | How can we reduce the data volume of message sent across the system without sacrificing information content? |
![]() | Detour | How can you route a message through intermediate steps to perform validation, testing or debugging functions? |
Scatter-Gather | How do you maintain the overall message flow when a message needs to be sent to multiple recipients, each of which may send a reply? |
You can try any of these patterns out using Apache Camel / FUSE Mediation Router 1.5 and onward.
Thursday, January 29, 2009
POJOs can route too!
In Camel we have several really cool Domain Specific Languages (DSLs) for easily expressing routing rules. But you don't need to learn these to use Camel. Starting with a POJO, you can use annotations to produce, consume or route messages to any Camel endpoint.
Take the following bean for example
We use the @Consume annotation to mark onFileSendToQueue as a consumer of any messages coming from the file:a/path endpoint. To enable the bean to send messages to the activemq:myQueue endpoint, we use the @Produce annotation. All conversions between Files, Strings and JMS Messages are automatic. Pretty easy huh?
We also have the @RecipientList annotation that turns any bean into a dynamic Recipient List.
Here we consume JMS messages from myQueue and based on the body, send it out to a list of recipients. Again, very easy. If you're a ServiceMix user, Gert mentions how to use this trick from a ServiceMix perspective too, go check it out!
If you need more info, I've put all of these concepts into a little demo here. As always, if you need help using Camel, please get in touch.
Take the following bean for example
public class BeanThatTalksCamel {
@Produce(uri="activemq:myQueue")
ProducerTemplate producer;
@Consume(uri = "file:a/path")
public void onFileSendToQueue(String body) {
producer.sendBody(body);
}
}
We use the @Consume annotation to mark onFileSendToQueue as a consumer of any messages coming from the file:a/path endpoint. To enable the bean to send messages to the activemq:myQueue endpoint, we use the @Produce annotation. All conversions between Files, Strings and JMS Messages are automatic. Pretty easy huh?
We also have the @RecipientList annotation that turns any bean into a dynamic Recipient List.
public class RecipientListBean {
@Consume(uri = "activemq:myQueue")
@RecipientList
public List route(String body) {
// return list of recipients based on message body
}
}
Here we consume JMS messages from myQueue and based on the body, send it out to a list of recipients. Again, very easy. If you're a ServiceMix user, Gert mentions how to use this trick from a ServiceMix perspective too, go check it out!
If you need more info, I've put all of these concepts into a little demo here. As always, if you need help using Camel, please get in touch.
Monday, January 26, 2009
Helpful Maven Build Tips
Brian Fox recently posted some great tips to improve your Maven builds. You should check them out if you haven't already. I've been doing most of what he said already but one really caught my attention, and I will repost here:
I can't believe I didn't know about this option before. Having to grep through surefire log files has really annoyed me in the past... many kudos to Brian for sharing this!
#6 Print Test Failures to Standard Output
Tip: Enable -Dsurefire.useFile=false. This is a favorite of mine since this causes surefire to print test failures to standard out, where it will get included in the build failure log and email. This saves you from having to dig back onto the machine to find the surefire report just to see a simple stack trace. (to enable globally in settings.xml:in an active profile) true
I can't believe I didn't know about this option before. Having to grep through surefire log files has really annoyed me in the past... many kudos to Brian for sharing this!
Subscribe to:
Posts (Atom)