This course is designed as an introduction to using Apache Camel. Camel is one of the most popular open-source frameworks targeted at solving integration problems. Camel realizes standard, well-established Enterprise Integration Patterns, or EIPs. In this course, we will cover several of these EIPs, as they are vital for Camel implementations. I will show you how to use these patterns as we add Camel to a case study project.
This course is designed as an introduction to using Apache Camel. Camel is one of the most popular open-source frameworks targeted at solving integration problems. Camel realizes standard, well-established Enterprise Integration Patterns, or EIPs. In this course, we will cover several of these EIPs, as they are vital for Camel implementations. I will show you how to use these patterns as we add Camel to a case study project, a Java application for processing order fulfillment. I chose this scenario because it captures a common problem that developers face: best practices for integration are commonly an afterthought during initial implementation. In our scenario, the fulfillment processor sends orders to one fulfillment center. The product owner wants to add a new method for fulfillment, but the new fulfillment endpoint has a different message structure and different rules for processing than the current one. You will see how we can introduce Apache Camel to increase the cohesion of the components in the processor and decrease the on-boarding time of future fulfillment endpoints. Through patterns such as pipes and filters, message routing, message endpoints, and message translation, we will implement processing to a new fulfillment center using Camel as the primary means of integration. By taking this course, you will gain foundational knowledge of Apache Camel. You will learn about the architecture, including CamelContext, routing, endpoints, and components. You will see what it takes to add Apache Camel to a project. You will see how Camel implements standard EIPs and usage examples that leverage the patterns. Finally, you will learn how to test and debug Camel routes. This course is primarily intended for developers who are looking for a framework to solve integration problems and/or are interested in Apache Camel as a framework. It will also be useful for technical and solution architects who are investigating technologies to leverage for implementing integration. It is recommended that you are proficient with Java and knowledgeable in Spring before taking the course. While viewing the course, you will be able to easily follow along with the demonstrations, each of which will build on the previous demonstration for a fluid experience. It is recommended that you download the initial case study application into your IDE prior to starting the course.
Michael is a Senior Technical Architect at NVISIA. He's worked in technology for almost twenty years for a variety of clients across several different industries. He has a great passion for teaching and mentoring.
Introduction to Enterprise Integration Hello and welcome to the course. My name is Michael Hoffman and along with being a Pluralsight author, I work at a major integrator in the travel industry. You can find me on Twitter at @mhi_inc. In this course, I will be focusing on introducing you to integrating with Apache Camel. My reason for authoring the course is that I believe Apache Camel is one of the best and most powerful integration frameworks on the market. I've had several very successful implementations leveraging Camel. And I wanted to share my knowledge and experience with you so that you can also take advantage of its benefits.
Getting Started With Apache Camel This is Michael Hoffman from Pluralsight. Welcome to the second module of this course. In this module, I will get you started with the fundamentals of Apache Camel through a case study application.
Routing From a Database This is Michael Hoffman from Pluralsight. Welcome to the third module of this course. In this module, we will begin to refactor the case study project from module two, so that it can leverage Camel for mediation. The focus will be on Camel's ability to route data from a database.
Message Processing Hello, this is Michael Hoffman from Pluralsight. Welcome to the fourth module of this course. In this module, we're going to expand on the route that was coded in Module Three by adding message transformation. Earlier in the course, we described Camel as a mediator. I showed you a mediation example of an air traffic controller. In the example, I showed how a plane routes messages to the air traffic controller. I gave you examples of message types that could be routed to the controller. I also told you that the controller responds after processing the message. It's in this processing, where messages need to be transformed. The transformation may be required due to the data structure, the data type, the data representation, or the transport. The goal of this module is to take a deep dive into how Camel uses messages and supports message transformation. In the first part of this module, I will focus on the structure and transformation of messages. Several message related enterprise integration patterns will be covered, including command message, document message, and event message. The Camel Message Model will also be defined, including the concepts of a message and an Exchange. You'll see how Camel supports message transformation through the message translator, enterprise integration pattern. In the second part of this module, I will continue to build on the route from the previous module. Message translation will be introduced using a processing bean to transform the order ID from the order's database to an XML structure for an order. We will also test the translation of the message. Let's start by looking at the message enterprise integration pattern.
Routing to a JMS Queue Hello, this is Michael Hoffman from Pluralsight. Welcome to the fifth module of the course. In this module, we're going to focus on routing a message to a JMS queue. In module three, you saw how to implement an endpoint in Camel. If you remember, an endpoint is an enterprise integration pattern. It provides a way to connect an application to a message channel in order to send and receive messages. The first endpoint we implemented used SQL to retrieve new orders from a database. In this module we're going to use the Java Message Service or JMS to send those new orders to a message queue. I'm going to start by providing a brief overview of the JMS API. The JMS API finds a way to create, send, receive and read message. I'll detail the differences between queues and topics as well as cover the related enterprise integration patterns of point-to-point channel and publish-subscribe channel. I'll also briefly explain the JMS provider implementation we're going to use called Apache ActiveMQ. Finally, we will finish off the first Camel route that we started in the case study project. I'll demonstrate how to configure ActiveMQ in the application and then I'll show you how to route a message to an ActiveMQ queue.
Content-Based Router Hello, this is Michael Hoffman from Pluralsight. Welcome to the sixth module of the course. In this module we're going to focus on routing a message to a message channel based on its contents. In the previous module, we completed the coding of our first Camel route. The route retrieved new order IDs from a database, transformed them into messages based on an XML schema, and then sent the messages to an ActiveMQ queue. In this module, I'm going to show you the next step for order fulfillment processing. I'll route the messages from the ActiveMQ queue to the appropriate fulfillment center queue based on the message content. The key topic for this module is the enterprise integration pattern called Content-Based Router. The intention of this pattern is to handle a situation in which the implementation of a single logical function is spread across multiple physical systems. I'll describe some of the benefits of using a content-based router as well as show you how a content-based router is implemented through the Camel Java DSL. With an understanding of the content-based router, I'm going to show you how to implement one in the case study project. The content-based router will use the fulfillment center name on the message to determine which fulfillment center ActiveMQ queue to route to.
Routing to a Web Service Hello, this is Michael Hoffman from Pluralsight. Welcome to the seventh module of the course. In this module, we're going to focus on routing a message to a RESTful web service. In the previous module, we completed the coding of our second Camel route. The route implemented the content-based router enterprise integration pattern. Messages were routed to one of two fulfillment center ActiveMQ queues based on the message content. Our next step is to implement processing the message for the first fulfillment center. The first fulfillment center we're going to route to has a RESTful web service as its endpoint. I plan to briefly cover the Oracle JAX-RS specification, which is Java spec for RESTful web services. I'll also cover Camel's HTTP4 component, which provides support for routing a message to a RESTful web service. With an understanding of the JAX-RS specification and HTTP4 component, we're going to implement another Camel route. The route will take the message from the fulfillment center one active MQ queue, transform it from XML to JSON, and then send it to the fulfillment center's RESTful web service endpoint using the HTTP4 component. To verify the route, I'll show you how to use Camel's test libraries. Let's begin with an overview of JAX-RS.