Over a million developers have joined DZone.

Apache Camel 2.21 Released - What's New

DZone's Guide to

Apache Camel 2.21 Released - What's New

We take a look at the latest iteration of this popular open source integration tool and what has been added to make developers' lives easier.

· Integration Zone ·
Free Resource

Download Microservices for Java Developers: A hands-on introduction to frameworks and containers. Brought to you in partnership with Red Hat.

We have just released Apache Camel 2.21 and I will in this blog highlight the noteworthy changes.

This release does NOT support Spring Boot 2.
Support for Spring Boot 2 will come in Camel 2.22, which we plan to release before summer 2018.

1) Working with large JMS messages
We have added better support for working with large messages in streaming mode in the JMS component. I have previously blogged about this.

2) FTP supports resume download
The FTP component can now resume downloads. For example, if you download very big files, and have connectivity issues, then the FTP consumer will be able to resume the download upon re-connect.
3) FTP with pollEnrich
The FTP component has been improved to work better with the pollEnrich (Content Enricher EIP) to poll in a file on-demand. Now the current thread is used for this in a more synchronous task instead of starting the scheduled scheduler (which the regular consumer uses).

4) FTP activity logging
The FTP component now reports more activity when it downloads, uploads, scan for files etc, which you can see in JMX and in the logs (you can set the logging level). This should help better to track how much has been download/uploaded of the files and what remains.

5) Easier configuration of RabbitMQ
The RabbitMQ component can now be configured on the component level where you can setup broker details, logins, etc. so you do not have to repeat this in all the endpoint URLs. This is similar to how you use the other messaging components such as JMS.

6) Spring Boot route actuators
The Camel SB actuators are now in read-only mode by default. The route actuator endpoints can have the read-only mode turned off, which allows you to manage the lifecycle of the Camel routes. In addition, more details can be retrieved such as an XML dump of the routes.

7) Rest DSL API-Doc with examples
The Rest DSL can now also include examples in the DSL which allows you to generate the Swagger/OpenAPI doc with examples included.

8) Claim Check EIP
There is a new Claim Check EIP which makes it much easier to store information from the exchange during routing, and then retrieve that later (think it like a push/pop). You can find more details in the EIP doc.

9) Sage EIP
There is a new Saga EIP for simulating transaction in distributed systems. The Saga EIP has plugins for different Saga services, that orchestrate the transactions.

10) More components
And, as usual, there are more components. For example, there are 2 new AWS services for KMS and MQ. There is also our first component to integrate with cryptocurrencies.

11) Testing with route coverage
We have added support for running unit tests with route coverage reports turned on. This allows you to check if you have tests that cover all paths of your routes. Camel tools such as the Camel IDEA plugin will work on adding support for presenting the report and have indicators in the source code about the coverage (e.g. like you have for Java code coverage). The Camel Maven Plugin has a goal to output the route coverage.

12) Testing with advice-with output before vs after
When using advice-with we now log the before vs after routes in XML to make it easier for developers to see what their advices have changed in the routes.

There are a bunch of other smaller improvements and other things, and you can find more details in the Camel 2.21 release notes.

Download Building Reactive Microservices in Java: Asynchronous and Event-Based Application Design. Brought to you in partnership with Red Hat

integration ,apache camel ,open source

Published at DZone with permission of

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}