Tom Donohue Tom Donohue


Aerial drawing of a road network with cars on it
Integration done well

What is integration?

Integration is all about connecting systems together.

It’s about moving data between files, APIs and apps. If you’re starting to think about how to pull data out of Salesforce into a report, or how your applications are communicating with each other, then you’re already thinking about integration.

What is open source integration?

There is a ton of integration software out there.

Some of it is good. Some of it is very shit, and extremely expensive. 😩

I solve integration problems with open source tools, like Apache Camel, ActiveMQ and Qpid Dispatch.

These tools are open to all and support recognised standards. And thousands of companies are running them in production.

If you’ve got an integration problem to solve, or you want to know how to connect your pile of systems together with open source, then check out my articles on open source integration below.

Integration architecture

How to build up your architecture, with patterns, approaches and tools:

  • Enterprise Integration Patterns: Book Review: This is my review of the famous software engineering book. In this article I summarise the book, and tell you how it will grow your knowledge, and help you design solutions to complex integration problems.

Apache Camel

Apache Camel is an integration framework for Java and I’ve written quite a few articles on it:

  • When should you use Apache Camel?: Camel is sometimes misunderstood and developers and architects aren’t sure when they should use it. This article tells you what Camel is for, and when you should use it.

  • Apache Camel Tutorial: Apache Camel is an amazing framework for Java that handles all the hard work of integration very well. It comes with 200+ connectors for different systems, implements most of the well-known enterprise integration patterns, and has a thriving community. If you’ve already decided on Camel (good for you!), this article shows you how to get started from a developer perspective.

  • Understanding Camel routes: A route in Camel is a flow of data from A to B, through different stages or transformations. Routes are comprised of things like components and EIPs. This page contains an infographic which explains a typical route in Apache Camel.

  • Guide to Testing in Apache Camel: Testing in Camel requires learning a few techniques and APIs, like mock components. In this guide I go through the steps it takes to write a test, and include some sample code.

More Apache Camel articles →


  • Using ActiveMQ with Apache Camel: How to send and receive messages from ActiveMQ Artemis message broker, with Apache Camel’s JMS component. This will allow you to use simple queue-like structures for sharing messages asynchronously with other applications.

  • XA transactions in Camel: a checklist: Sometimes you need to use distributed transactions. This is a way of ensuring that an operation is atomic across several different systems, e.g. pulling messages out of a database and sending them to another API, in one “action”. This is a quick reference guide to make sure you’ve set up Camel correctly.

Working with APIs

  • Calling a RESTful service from Apache Camel: Third parties will often make their systems available through a REST API. Here’s how to use the HTTP component in Apache Camel to invoke a REST service, and how to provide basic authentication, if the service requires it. Plus a complete working solution.


  • Apache Camel Step-by-Step: Save time when learning Apache Camel. My full-length book, video lessons and example applications will teach you how to master Camel in no time.