This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/camel-website.git
The following commit(s) were added to refs/heads/main by this push: new d3cc57a7 Camel 4.3 whats new WIP (#1107) d3cc57a7 is described below commit d3cc57a77ca9da6c35a756627023abbb3b6ceb3a Author: Claus Ibsen <claus.ib...@gmail.com> AuthorDate: Mon Dec 18 19:41:50 2023 +0100 Camel 4.3 whats new WIP (#1107) * Camel 4.3 whats new WIP * Camel 4.3 whats new WIP * Camel 4.3 whats new WIP * Camel 4.3 whats new WIP * Camel 4.3 whats new WIP * Camel 4.3 whats new WIP * Added a little SBOM section in 4.3.0 what's new Signed-off-by: Andrea Cosentino <anco...@gmail.com> * Camel 4.3 whats new WIP --------- Signed-off-by: Andrea Cosentino <anco...@gmail.com> Co-authored-by: Andrea Cosentino <anco...@gmail.com> --- content/blog/2023/12/camel43-whatsnew/featured.png | Bin 0 -> 243818 bytes content/blog/2023/12/camel43-whatsnew/index.md | 177 +++++++++++++++++++++ .../blog/2023/12/camel43-whatsnew/jbang-edit.png | Bin 0 -> 405557 bytes .../2023/12/camel43-whatsnew/prometheus-jbang.png | Bin 0 -> 1298922 bytes 4 files changed, 177 insertions(+) diff --git a/content/blog/2023/12/camel43-whatsnew/featured.png b/content/blog/2023/12/camel43-whatsnew/featured.png new file mode 100644 index 00000000..a9a95d3b Binary files /dev/null and b/content/blog/2023/12/camel43-whatsnew/featured.png differ diff --git a/content/blog/2023/12/camel43-whatsnew/index.md b/content/blog/2023/12/camel43-whatsnew/index.md new file mode 100644 index 00000000..695dc82d --- /dev/null +++ b/content/blog/2023/12/camel43-whatsnew/index.md @@ -0,0 +1,177 @@ +--- +title: "Apache Camel 4.3 What's New" +date: 2023-12-18 +authors: [davsclaus,gzurowski,orpiske,apupier,oscerd] +categories: ["Releases"] +preview: Details of what we have done in the Camel 4.3 release. +--- + +Apache Camel 4.3 (non LTS) has just been [released](/blog/2023/12/RELEASE-4.3.0/). + +This release introduces a set of new features and noticeable improvements that we will cover in this blog post. + +## Camel Core + +Added basic support for Java 21 virtual threads. Note this is experimental and there is more work to complete +to have full support for virtual threads. More details at [threading model](/manual/threading-model.html). + +The simple language can now work better with JSon and XML with inlined jq/jsonpath/xpath functions. This +can be used for basic message transformation. You can find an examples at: + +- [json transformation](https://github.com/apache/camel-kamelets-examples/tree/main/jbang/json-transform) +- [xml transformation](/components/next/languages/xpath-language.html#_transforming_a_xml_message) + +We added `debugStandby` option to allow route debugging a running Camel application on demand. Being in standby mode +has no overhead and only when debugging is activated then Camel runs in debugging mode, which can then be deactivated +to go back to run in normal mode. + +## Camel Main + +Added support for Prometheus in the new `camel-micrometer-prometheus` component, that makes it possible to expose +metrics in Prometheus format, as shown below: + + + +This can be configured in `application.properties`: + +- Micrometer and Prometheus options using `camel.metrics.` + +## DSL + +We added the following EIPs: + +- `setHeaders` EIP to make it easier and less verbose to set multiple headers from the same EIP. +- `convertHeaderTo` EIP to make it easy to convert header value to a specific type. + +The `throttler` EIP has been refactored to throttle based on concurrent requests instead of sliding window. + +We improved configuring beans, that can now support builder beans, that are used to build the actual bean. +For example in the following YAML notice how the `builderClass` refers to class responsible for building the target bean: + +```yaml +- beans: + - name: myCustomer + type: com.mycompany.Customer + builderClass: com.mycompany.CustomerBuilder + properties: + name: "Acme" + street: "Somestreet 42" + zip: 90210 + gold: true +- from: + uri: "timer:yaml" + parameters: + period: "5000" + steps: + - bean: + ref: myCustomer + method: summary + - log: "${body}" +``` + +The builder class is required to have a build method that Camel invokes. The name of the method is `build` by default. + +To see more see the following examples: + +- https://github.com/apache/camel-kamelets-examples/tree/main/jbang/bean-builder +- https://github.com/apache/camel-kamelets-examples/tree/main/jbang/bean-inlined-code + +## Camel JBang (Camel CLI) + +We have continued investing in Camel JBang, and this time we have some great new stuff in the release. + +We have added support for using JBang style for declaring dependencies by using `//DEPS ` code comments, as shown +in the following Java file: + +```java +//DEPS org.apache.camel:camel-bom:4.3.0@pom +//DEPS org.apache.camel:camel-endpointdsl +//DEPS org.apache.camel:camel-kubernetes +//DEPS org.apache.camel:camel-aws2-s3 + +import org.apache.camel.builder.endpoint.EndpointRouteBuilder; + +public class foo extends EndpointRouteBuilder { + + @Override + public void configure() { + from(timer("trigger").delay(1000).repeatCount(1)) + // something that may use Java APIs from Kubernetes + } +} +``` + +You can now also easily use JBang way of editing source code in your favorite editor, such as `jbang edit -b foo.java`, +shown in the screenshot below: + + + +You can find an example at [jbang-edit example](https://github.com/apache/camel-kamelets-examples/tree/main/jbang/jbang-edit). + +Another new functionality is the _live message transformer_ with the new `camel transform message` command. +You can find detailed information in the [camel-jbang docs](/manual/camel-jbang.html#_transforming_message_data_mapping), +and a basic example here [json transformation](https://github.com/apache/camel-kamelets-examples/tree/main/jbang/json-transform). + +We have improved the `camel export` to avoid starting some services that was not needed, which could potentially +cause the export to tail or take longer time. + +Camel JBang now accurately reports resolved vs download for dependency resolution. Previously it may report downloading +but the dependency was resolved from local disk. You can also run in `--verbose` mode that shows verbose details +for dependency resolution that can be useful for troubleshooting. + +Camel JBang export to `camel-main` can now configure authentication for container image registries. + +## Spring and Spring Boot + +Upgraded to latest [Spring Boot 3.2.0](https://spring.io/blog/2023/11/23/spring-boot-3-2-0-available-now) release. + +The health checks in Camel now incorporate with the Spring Boot way of doing readiness and liveness check. + +## SBOM + +Starting from releases 4.0.3 and 4.2.0, we started to publish JSON and XML SBOM in the Camel website download section. An SBOM is a “software bill of materials” and in recent years has emerged as a key building block in software security and software supply chain risk management. An SBOM is a nested inventory, which means you could have an overview of all the components of your software. + +In combination with other tools, the SBOM could be analyzed against the CVEs Database and anyone could be able to have a security analysis always up-to-date. We plan to include SBOMs in all of our releases and the work has already started. + +This is of particular interest for a project like Camel because we are using a large number of dependencies (direct and transitive) in our projects and it’s really hard to track everything. From the community perspective, this could also be a good entry point for new contributors to periodically have a look at new CVEs and try to fix them. + +## Miscellaneous + +The `camel-hdfs` component has been deprecated and planned for removal soon. The Apache Hadoop project is unfortunately +not offering client JARs with a limited set of dependencies, which leads to a giant dependency set that have many +old versions that has known CVEs. + +The `camel-file` and `camel-ftp` components can now also write SHA checksum file, when uploading files. + +The `camel-jetty` component has been upgraded from Jetty 10 to 12. + +The `camel-openapi-java` now better support both OpenAPI 3.0 and 3.1 at the same time. + +Components such as `camel-ftp` and others that can take a long time on first poll, will now report as ready +more eager in readiness check. Before they would become ready after first poll completed; this could cause +problems if downloading a large FTP file takes a long time, causing the readiness check to fail on startup. + +Upgraded many 3rd party dependencies to latest release at time of release. + +## New Components + +- `camel-aws-config` - Manage AWS Config service. +- `camel-elasticsearch-rest-client` - Perform queries and other operations on Elasticsearch or OpenSearch (uses low-level client). +- `camel-kubernetes-cronjob` - Perform operations on Kubernetes CronJob. +- `camel-micrometer-prometheus` - Camel Micrometer Prometheus for Camel Main +- `camel-smb` - Receive files from SMB (Server Message Block) shares. + +## Upgrading + +Make sure to read the [upgrade guide](/manual/camel-4x-upgrade-guide-4_3.html) if you are upgrading from a previous Camel version. + +## Release Notes + +You can find more information about this release in the list of JIRA tickets resolved in the release: + +- [Release notes 4.3](/releases/release-4.3.0/) + +## Roadmap + +The following 4.4 release (LTS) is planned for February 2024. + diff --git a/content/blog/2023/12/camel43-whatsnew/jbang-edit.png b/content/blog/2023/12/camel43-whatsnew/jbang-edit.png new file mode 100644 index 00000000..8b8e6b08 Binary files /dev/null and b/content/blog/2023/12/camel43-whatsnew/jbang-edit.png differ diff --git a/content/blog/2023/12/camel43-whatsnew/prometheus-jbang.png b/content/blog/2023/12/camel43-whatsnew/prometheus-jbang.png new file mode 100644 index 00000000..a3a0b35d Binary files /dev/null and b/content/blog/2023/12/camel43-whatsnew/prometheus-jbang.png differ