You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2021/03/26 10:27:44 UTC

[camel-website] branch new39 created (now e8ebe79)

This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a change to branch new39
in repository https://gitbox.apache.org/repos/asf/camel-website.git.


      at e8ebe79  Blog - Whats new in Camel 3.9

This branch includes the following new commits:

     new e8ebe79  Blog - Whats new in Camel 3.9

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


[camel-website] 01/01: Blog - Whats new in Camel 3.9

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch new39
in repository https://gitbox.apache.org/repos/asf/camel-website.git

commit e8ebe791b9a7424607e15ac73afc576a0c860bb2
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Fri Mar 26 11:27:30 2021 +0100

    Blog - Whats new in Camel 3.9
---
 content/blog/2021/03/Camel39-Whatsnew/featured.png | Bin 0 -> 3975989 bytes
 content/blog/2021/03/Camel39-Whatsnew/index.md     | 126 +++++++++++++++++++++
 .../2021/03/Camel39-Whatsnew/memory-camel38.png    | Bin 0 -> 274428 bytes
 .../2021/03/Camel39-Whatsnew/memory-camel39.png    | Bin 0 -> 280154 bytes
 4 files changed, 126 insertions(+)

diff --git a/content/blog/2021/03/Camel39-Whatsnew/featured.png b/content/blog/2021/03/Camel39-Whatsnew/featured.png
new file mode 100644
index 0000000..e5077f5
Binary files /dev/null and b/content/blog/2021/03/Camel39-Whatsnew/featured.png differ
diff --git a/content/blog/2021/03/Camel39-Whatsnew/index.md b/content/blog/2021/03/Camel39-Whatsnew/index.md
new file mode 100644
index 0000000..e31bac5
--- /dev/null
+++ b/content/blog/2021/03/Camel39-Whatsnew/index.md
@@ -0,0 +1,126 @@
+---
+title: "Apache Camel 3.9 What's New"
+date: 2021-03-29
+authors: [davsclaus]
+categories: ["Releases"]
+preview: Details of what we have done in the Camel 3.9 release.
+---
+
+Apache Camel 3.9 has just been released.
+
+This is a non-LTS release which means we will not provide patch releases.
+The next planned LTS release is 3.11 scheduled for June 2021.
+
+## So what's in this release
+
+This release introduces a set of new features and noticeable improvements that we will cover in this blog post.
+
+### Reduced object allocations
+
+We have optimized the core by dramatically reducing object allocations - in fact
+the routing engine will produce ZERO or little objects during routing.
+
+If you have seen Java monitoring tools then they will show memory usage charts
+that has _saw tooth's_ where objects are allocated and later reclaimed by the JVM garabage collector.
+
+The diagrams below illustrate the same example of using Camel 3.8 vs 3.9
+
+{{< image "memory-camel38.png" "Camel 3.8" >}}
+
+In Camel 3.8 597mb of objects is allocated by Camel in total (running 10 minute).
+
+{{< image "memory-camel39.png" "Camel 3.9" >}}
+
+And in Camel 3.9 that is **ZERO**
+
+For more details read [Claus blog post](http://www.davsclaus.com/2021/03/apache-camel-39-no-more-saw-tooth-jvm.html)
+which explains how this was done.
+
+### Optimized core
+
+We continue to optimize the Camel core. For this release we have continued
+to optimize the startup phase of Camel. Camel now prepare and wireup Camel routes
+at an earlier phase, which helps us in the near future, to be able to do build time
+optimizations (with GraalVM, Quarkus, etc.) of the Camel routes, which makes Camel
+startup even faster and quicker.
+
+We also began optimizing for loading classes earlier. We identified that when Camel routes
+is executing the first message, then the JVM classloader may load some Camel classes that
+are needed for routing. For this release we optimize some of the most common classes being loaded,
+but we want to implement a more automated solution for Camel 3.10, ensuring new classes are also eager loaded in the future.
+
+The Camel components that uses __header filtering__ has been optimized to
+filtering that are faster and much reduced object allocations.
+
+### Optimized HTTP component
+
+The `camel-http` component has been optimized to reduce object allocations, and be a little bit faster.
+We also introduce more options which can be used to turn off various functionality
+from the underlying HTTP client that are not needed (such as cookie management), which
+optimizes for better performance.
+
+### Multi language DSLs
+
+In Camel 3.8 we started porting over Camel K's support for DSLs in alternative languages.
+For this release we added support for:
+
+- JavaScript
+- Groovy
+- Kotlin
+
+This means you can implement Camel routes in different languages and run them together.
+
+This little [example](https://github.com/apache/camel-examples/tree/master/examples/camel-example-routeloader)
+shows using Java and XML routes together. But you can drop a .ktn file in the [myroutes](https://github.com/apache/camel-examples/tree/master/examples/routeloader/src/main/resources/myroutes)
+directory and Camel will during startup compile the Kotlin route and add its routes to the running Camel.
+
+Notice that this approach is based on the principe of runtime compiling small route DSL snippets.
+
+### Optional Property Placeholders
+
+Camel's elaborate property placeholder feature now supports optional placeholders,
+which is defined by a `?` (question mark) as prefix for the key name, eg
+
+    {{?myBufferSize}}
+
+And Camel understands when you use optional parameters when defining Camel endpoints, eg:
+
+    file:foo?bufferSize={{?myBufferSize}}
+
+Then the `bufferSize` option will only be configured if a placeholder exists.
+Otherwise the option will not be set on the endpoint, which allows to use any default value instead.
+
+
+### Kafka
+
+The `camel-kafka` component has been made more fault tolerant and is now better able to recover from various errors
+with connectivity to Kafka Brokers, or payload serialization errors, etc. You can for example configure what Camel should do
+based on the kind of caused `Exception`; whether to retry, or disconnect/reconnect, or something else.
+And for more control you can plugin your own custom strategy when the out of the box settings are not sufficient.
+
+The `camel-vertx-kafka` now has support for using manual offset commits.
+
+The `camel-kafka` has fixed some issues when using manual commit which would cause camel-kafka
+to automatic commit anyway (such as on shutdown).
+
+The components are upgraded to Kafka 2.7.
+
+### Spring Boot
+
+We have upgraded to latest Spring Boot 2.4.4 release.
+
+### New components
+
+This release has a number of new components, data formats and languages:
+
+- `camel-aws-secrets-manager` - Manage AWS Secrets Manager services
+- `camel-google-storage` - Store and retrieve objects from Google Cloud Storage Service
+- `camel-google-functions` - Manage and invoke Google Cloud Functions
+
+## Upgrading
+
+Make sure to read the [upgrade guide](/manual/latest/camel-3x-upgrade-guide-3_9.html) if you are upgrading from a previous Camel version.
+
+## Release Notes
+
+You can find more information about this release in the [release notes](/releases/release-3.9.0/), with a list of JIRA tickets resolved in the release.
diff --git a/content/blog/2021/03/Camel39-Whatsnew/memory-camel38.png b/content/blog/2021/03/Camel39-Whatsnew/memory-camel38.png
new file mode 100644
index 0000000..95dc9bf
Binary files /dev/null and b/content/blog/2021/03/Camel39-Whatsnew/memory-camel38.png differ
diff --git a/content/blog/2021/03/Camel39-Whatsnew/memory-camel39.png b/content/blog/2021/03/Camel39-Whatsnew/memory-camel39.png
new file mode 100644
index 0000000..4bed022
Binary files /dev/null and b/content/blog/2021/03/Camel39-Whatsnew/memory-camel39.png differ