Thursday, November 28, 2019

Apache Camel 3 is out!!

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!

Friday, January 19, 2018

Camel in Action, Second Edition is Complete!

Camel in Action Website
We did it again +Claus Ibsen :-) Camel in Action, 2nd edition is printing as I type this blog and will be in book stores in a few weeks. Time to celebrate!

Our theme this time around is more - more of everything to help you get started with Apache Camel and more for seasoned integration vets too. Well, this has kinda been the approach in Apache Camel since the last book as well. Let's look at some stats from the Camel versions used in each book edition:

Camel 2.5.0 Camel 2.20.1
>80 components >280 components
482,779 LOC 1307016 LOC
23 named contributors 497 named contributors

So yeah, Camel is a lot bigger this time round and so our book had to be too :-) It's amazing how much the project has grown TBH. The component count has more than tripled, LOC near that as well and the number of contributors has just blown up. Now, granted back in the early days of Camel we used SVN which didn't allow named contributors to be counted until they were actual Apache Camel committers themselves (GitHub PRs to the rescue!!). Still, I estimate the actual number of contributors has doubled at the very least.

It's not just components that have been added to Camel either. This time we needed to cover more topics like: microservices, RESTful web services, containers (think docker/kubernetes), clustering, reactive apps, security, and even IoT. Like last time we had a guest author contribute a chapter about a new emerging technology. Big thanks to Henryk Konsek for contributing the chapter on IoT. Neither myself or Claus has any experience in IoT so we probably wouldn't have covered it if we didn't get an expert on board :-)

A huge thanks to Claus for being such a pleasure to work with (albeit being a bit hard to keep up with ;-) ). Looking forward to next time round!

And finally, let me leave you with one of my favourite lines from our book:
"To the Apache Camel community - may this book be a helpful companion on your journeys with Camel"

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:

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

Wednesday, October 5, 2016

Camel in Action v2 Update

Manning just published a new MEAP of Camel in Action this week so I figured I'd give a little update on our loooong journey with the 2nd edition :-)

The latest MEAP contains one new chapter, in addition to some fixes in other chapters. The basic outline for the "Developing Camel projects" chapter is:
  • Creating Camel projects with Maven
  • Creating Camel projects in the Eclipse IDE
  • Debugging with Camel
  • Creating custom components 
  • Creating custom interceptors
  • Creating custom data formats
  • Using the API component framework
A lot of this still applied from the first edition with the exception of debugging, custom data format creation, and using the super cool API component framework.

Claus is busy working on a more interesting chapter titled simply "Microservices". Yes, we are devoting a whole chapter to this buzzword :-) Really, it was unavoidable as Camel has been growing to have 1st class support for great frameworks like Spring Boot and Wildfly Swarm. Also microservices is just a little bit popular right now ;-)

So what's next? Well, we only have a handful of chapters left to write and hope to have it all handed in by the end of the year. So you can expect a print copy early next year after Manning polishes our work. 

Cheers!

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 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, May 8, 2013

Talk on ServiceMix at CamelOne 2013


It's getting close now to CamelOne 2013, the conference all about open source integration and messaging. I've been fortunate enough to have been a part of previous CamelOne events over the years and lemme tell you, it's been great. We try to keep fluff low, with lots of hands on technical talks.

Like other years, this year I'm planning on giving a talk on Apache ServiceMix titled "Enterprise Integration with Apache Camel and ServiceMix". For those who don't know, Apache ServiceMix is an open source container combining features from Apache ActiveMQ, Camel, CXF, and Karaf. ServiceMix and similar Karaf-based containers like JBoss Fuse are a great choice for folks wanting to do enterprise integration with Camel.

For the talk I'll be giving an update on the ServiceMix project, discussing best practices for developing and running Camel-based integration solutions in ServiceMix, and of course I'll use live demos throughout to demonstrate the concepts.

The conference runs for 2 days June 10-11, 2013 and registration details can be found at http://www.camelone.org. Hope to see you there! :-)


Wednesday, January 9, 2013

Fuse ESB Enterprise 7.1 Webinar


Last year just before the Christmas holidays we released Fuse ESB Enterprise 7.1. There have been quite a few changes since the 7.0.2 release we did; in fact, over 2000 tickets were resolved! I'm doing a webinar next week to cover some of the new user facing changes:

January 17 @ 10:00AM EST - Getting Started with Fuse ESB Enterprise 7.1

Some highlights of the changes include:

- New versions of Apache Camel, CXF, ActiveMQ, Aries and Karaf
- Java 7 support (just in time for the Java 6 EOL ;) )
- Security overhaul in Fabric

I'll have a live demonstration as well of course showing you how to code with Fuse IDE and deploy your app to the ESB.

Hope to see you there!

Thursday, June 28, 2012

Red Hat, here we come!


OK, I couldn't resist quickly blogging about the awesome news that was announced yesterday :) FuseSource is being acquired by Red Hat! For years now the Fuse team has been a small part of a company that was not focused on open source at all. So, we were very different from the rest of the company's goals. Despite this, we've done great things.

Now that we're being acquired by Red Hat, which is the epitome of an open source software company, even greater things will follow. So looking forward to being part of the JBoss team!


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:

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.


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.


Thursday, May 19, 2011

Open Source Integration with Apache Camel and How Fuse IDE Can Help

I've been meaning for a while to update an old but popular article I wrote about using Apache Camel. People are still reading it but the Camel version is 1.6 IIRC - we're current thinking of releasing 2.8 so Camel 1.6 is quite dated.

I also wanted to load up that example in some cool Camel GUI tooling that James created at FuseSource.


The new article is Open Source Integration with Apache Camel and How Fuse IDE Can Help. Check it out and let me know what you think!

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:

CamelOne - May 24-26


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:
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


Security BSides is an "unconference" style gathering here in St. John's. A brief description from the official site:

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 :)

Monday, March 21, 2011

Team Programming Competition Results

On Friday I sponsored a team programming competition at Memorial University here in St. John's. Like the previous competition this year, I presented a signed copy of Camel in Action to each of the 1st place winners. Congratulations to Melissa Reid and Ken Collingwood for winning!

Full results of the competition were posted on Jamie's blog.

Monday, February 28, 2011

Programming Competitions on the Rock

This past Friday I sponsored a programming competition at Memorial University here in St. John's. Was a great turn out - much more than I can remember back in the day when I competed in these things... Jamie posted the full results since he helped organize the event.

On behalf of FuseSource I presented a prize to the 1st place winner, Robert Robere. Robert, of course, won a signed copy of Camel in Action - what else? :)

Looking forward to the next one in 3 weeks!

Friday, January 14, 2011

Seminar on Time Series Novelty Detection

Just got this email in my inbox, feel free to stop by and see my talk. There is no mention of middleware or opensource I promise :)

GRADUATE STUDENT SEMINAR

JONATHAN S. ANSTEY
WILL GIVE A TALK ON

“TIME SERIES NOVELTY DETECTION WITH APPLICATION TO PRODUCTION SENSOR SYSTEMS”

WEDNESDAY, JANUARY 19, 2010
9:00 A.M.
EN-4002

MR. ANSTEY IS A GRADUATE STUDENT
IN THE M.ENG. PROGRAM
UNDER THE SUPERVISION OF DR. D. PETERS

ALL INTERESTED ARE WELCOME

I'm not sure either why this is all in CAPS :) For those interested, the full abstract of the work is:

Modern fiber manufacturing plants rely heavily on the use of automation. Automated facilities use sensors to measure fiber state and react to data patterns, which correspond to physical events. Many patterns can be predefined either by careful analysis or by domain experts. Instances of these patterns can then be discovered through techniques such as pattern recognition. However, pattern recognition will fail to detect events that have not been predefined, potentially causing expensive production errors. A solution to this dilemma, novelty detection, allows for the identification of interesting data patterns embedded in otherwise normal data. In this thesis we investigate some of the aspects of implementing novelty detection in a fiber manufacturing system. Specifically, we empirically evaluate the effectiveness of currently available feature extraction and novelty detection techniques on data from a real fiber manufacturing system.

Our results show that piecewise linear approximation (PLA) methods produce the highest quality features for fiber property datasets. Motivated by this fact, we introduced a new PLA algorithm called improved bottom up segmentation (IBUS). This new algorithm produced the highest quality features and considerably more data reduction than all currently available feature extraction techniques for our application.

Further empirical results from several leading time series novelty detection techniques revealed two conclusions. A simple Euclidean distance based technique is the best overall when no feature extraction is used. However, when feature extraction is used the Tarzan technique performs best.

Thursday, December 9, 2010

Camel in Action is complete!


So we did it. Camel in Action is headed to the press! Time for beers and all that, but first a little blog post :)

I had to actually search through my mail to find out when I started on this project. Turns out I got involved mid September 2009 which puts the time in about 15 months. Claus started before that so his month count is higher - poor guy ;) So it was a pretty big chunk of time for both of us but not too bad for a technical book I'm told.

We set out to create something that the growing Apache Camel community needed badly - a great reference for newbies and experts alike. I'd like to think we accomplished that goal. Seems the early access readers agree too.

Thanks to all who were involved in producing this book. We had tons of very helpful reviewers, Manning staff, and even multiple foreword writers - there were a lot of people involved in creating this other than Claus or myself. Of course, we officially thanked the folks involved in the acknowledgements section so be sure to look there if you helped out :)

I have yet to see anything other than a PDF copy of the book (which should be released tomorrow) so I'm really looking forward to when the print copies start showing up in 10 days!

Also, feel free to use the "camel50" code for 50% off when ordering through http://manning.com/CamelinAction

Now its time to celebrate.

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.
These webinars are interactive so you can ask questions to us directly. Register here and drop in, it will be an interesting show!

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):

  #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