Avoiding model lock in while building an AI Camel route

, by

Introduction In a previous blog post, we have seen how Camel parameter binding annotations could be used in conjunction with LangChain4J AI services to easily create Camel routes using Large Language Models. All this work is best reflected in a Camel Quarkus example. While building this example, poor care was taken about the choice of the LLM as this was not the initial priority. Thinking a bit more, this situation is a great opportunity to experience the switch of an LLM inside of a Camel application.

Continue reading ❯

CAMELAI

Modernizing Camel's Test Support Code: How To

, by

Earlier I wrote a blog post about a multi-release effort to clean up some of the legacy test code for Camel 4. In this blog post, I will dive into more details about how to adjust your code to use the modernized interfaces. New Interfaces Camel 4.9 will introduce two new interfaces to CamelTestSupport that will help users adjust their code and will help us with future maintenance of the test support code.

Continue reading ❯

CAMELTEST

Using Camel annotations with LangChain4j high level api available in next Camel Quarkus release

, by

Introduction In a previous blog post, we have seen how Camel could be used to transform raw unstructured text into structured Java objects. The shown example actually uses the LangChain4j high level API where a Java interface will handle the interactions needed with the underlying Large Language Model. However, at this time, a Quarkus LangChain4j issue prevented the usage of the Camel parameter binding annotations. This issue will be fixed in the next Camel Quarkus release, so let’s see how it will work.

Continue reading ❯

CAMELAI

Easier migration with Apache Camel

, by

This blog post introduces a Camel Upgrade Recipes project and shows an example of its usage. Introduction Migrating Apache Camel code can often be a tedious and error-prone process, especially when it involves repetitive tasks like renaming classes, updating method signatures, or adapting to new Camel API changes. To address this need, Camel Upgrade Recipes project based on OpenRewrite was developed. The project is not designed to provide fully automated migration but rather to assist with manual migrations, making them more efficient and less error-prone.

Continue reading ❯

CAMELMIGRATION

Unstructured data extraction with Apache Camel Quarkus and LangChain4j

, by

This blog post shows a concrete example of transforming raw unstructured text into structured Java objects with Camel Quarkus and Quarkus LangChain4j. Introduction Following previous experiments about unstructured data extraction, some directions were given about how a large language model could be setup to transform unstructured data into its structured counterpart. In this blog post, we will see a ready to use example that could serve as a starting point to create your own Camel route performing data extraction.

Continue reading ❯

CAMELAI

Modernizing Camel's Test Support Code: What You Need to Know

, by

The first law of software complexity says that “a well-designed system will degrade into a badly designed system over time”. This law can be ruthless for open source projects receiving hundreds of contributions every month. That’s why projects must refactor code, evaluate APIs, review tests, and modernize code to leverage the latest and greatest features from Java. Camel Test Support One area in Camel that has had little attention until recently was our test support code.

Continue reading ❯

CAMELTEST

Unlocking Efficient Data Processing with the Chunking DSL

, by

Chunking is a crucial aspect of data processing that can significantly impact retrieval quality, query latency, costs, and even the accuracy of Large Language Model (LLM) outputs. In this blog post, we’ll explore what chunking is, its importance, and how the new Chunking DSL in Apache Camel 4.8.0 improves data processing workflows. The Problem with Traditional Chunking Approaches Before Camel 4.8.0, applications using Camel would have to implement custom chunking logic or rely on external libraries.

Continue reading ❯

CAMELAI

Apache Camel AI: Leverage power of AI with DJL component

, by

Apache Camel AI is a set of components that allow various AI-related technologies to be integrated with Camel. Nowadays, LLMs such as OpenAI ChatGPT and Meta Llama are gaining a lot of attention, and many frameworks and tools are exploring ways to utilise them. Camel AI also includes the LangChain4j component suite, and there are already blog posts about how you can utilise LLMs using LangChain4j in the Camel Blog:

Continue reading ❯

CAMELAI

Experimenting extraction from unstructured data with Apache Camel and LangChain4j

, by

This blog is based on experiments done about extracting structured data into its structured counterpart. More precisely, in this post, we’ll give directions about how to convert a conversation transcript into a Java object. Introduction Reading articles like this over the net, it seems that folks have a lot of unstructured data at the disposal while not being able to take advantage on it. So probably, in the future we might expect to deal more and more with unstructured data extraction in integration flow.

Continue reading ❯

CAMELAI

The Rise and Fall of the Performance Monsters

, by

Introduction Apache Camel has always been committed to delivering top-notch performance. As the development of Camel 4 progressed, so did the dedication to enhancing its performance. In this blog post, we’ll explore the advances made in the pursuit of efficiency, focusing on key improvements introduced between Camel 4.1 and 4.2, with a few important improvements for the upcoming 4.3. Camel 4.1: A Leap Forward in Type Conversion One of the notable enhancements in Camel 4.

Continue reading ❯

FEATURESCAMEL

Change Data Capture with Apache Camel and Debezium

, by

In this article, we will explore how to use Debezium and Apache Camel in conjunction with Quarkus to build a reactive application efficiently and send real-time changes from a database to a destination, such as webservice or message queue or another database. What is Debezium? Debezium is a distributed, event-driven data change platform used to capture data changes in database systems and send them to other systems in real time so that applications can respond to all database insertions, updates and deletions made by other applications.

Continue reading ❯

FEATURESCAMEL

Hunting performance monsters on the back of a Camel

, by

Introduction We are thrilled to share the remarkable advancements in the performance of Apache Camel 4, achieved through our diligent efforts in addressing a critical JVM issue (JDK-8180450). In this article, we will delve into the details of our investigation, the tools employed, and the subsequent optimizations that have propelled Apache Camel 4 to new heights of speed and efficiency. Identifying the Performance Challenge The JVM issue JDK-8180450, known for its potential performance penalties during type checking, became our focal point.

Continue reading ❯

FEATURESCAMEL

Load properties from Vault/Secrets cloud services: introducing Camel Context automatic refresh on secrets updates

, by

Starting from Camel 3.19.0 we have four cloud services supported for loading properties as secrets: AWS Secret Manager Google Cloud Secret Manager Azure Key Vault Hashicorp Vault One of the problems we faced in the development was related to finding a way to automatically refresh the secret value on the secrets update. The main players in the cloud game are providing solutions based on their services: AWS provides multiple ways to be notified about secret updates and secret rotations through AWS Cloudtrail or AWS Cloud events, GCP leverages Google Pubsub to deliver messages with events related to secret, while Azure provides multiple ways of getting notified about events related to a vault in the Azure Key Vault service, mostly by using Azure Eventgrid as an intermediate service.

Continue reading ❯

CAMEL

Load properties from Vault/Secrets cloud services: an update

, by

In Camel 3.16.0 we introduced the ability to load properties from vault and use them in the Camel context. This post aims to show the updates and improvements we’ve done in the last two releases. Supported Services In 3.16.0 we’re supporting two of the main services available in the cloud space: AWS Secret Manager Google Cloud Secret Manager In 3.19.0, to be released, we’re going to have four services available:

Continue reading ❯

CAMEL

Top 10 features of Camel 3.x

, by

At the end of 2019 Camel 3 arrived. Some main features were modularization of the core and support for Java 11. A bunch of other changes were mentioned in Claus Ibsen’s blog: Apache Camel 3 What’s New (top 10) In this blog, we focus on the top 10 of features that arrived since the 3.0 release. As an overview, but also to give some attention to features not everyone is aware of.

Continue reading ❯

CAMEL

Camel 3.16.0 new feature: Load properties from Vault/Secrets cloud services

, by

In the last weeks, together with Claus, we’ve been working on a new feature: loading properties from Vault/Secrets cloud services. It will arrive with Camel 3.16.0, currently on vote and to be released by the end of this week (24/3). This post introduces the new features and provide some examples. Secrets Management in Camel In the past there were many discussions around the possibility of managing secrets in Camel through Vault Services.

Continue reading ❯

CAMEL

Camel 3 Release Stats

, by

Many developers know that Apache Camel is one of the most active Apache projects. Consider the top 3 Apache Code Authors in 2021: Andrea Cosentino: 4,447 commits (352,346 insertions, 399,815 deletions) Claus Ibsen: 2,974 commits (555,245 insertions, 567,896 deletions) Mark Thomas: 2,509 commits (186,889 insertions, 117,182 deletions) The first two places are occupied by Camel committers. In 2021 the Camel project also reached the second place when it’s about the number of commits (9541), just behind Superset.

Continue reading ❯

CAMEL

Introducing the Resume API v2

, by

The need to process larger quantities of data has been a growing concern and necessity within our community. For the last few releases we have been working to create mechanisms to simplify how our users can consume data at scale. Although Camel is no stranger to consuming data at scale, recent trends in computing and systems architecture introduce the need for behaviors that improve agility, speed and scalability when doing so.

Continue reading ❯

FEATURESCAMEL

Good bye camel-testcontainers! Hello Camel's test-infra

, by

For Camel 3.16.0 we are removing the deprecated container-based test modules and replacing them with a new set of modules called Camel test-infra. They continue to support container-based tests via TestContainers, however they abstract the underlying test infrastructure. One of the great benefits for our project is that they allow us to more easily switch from container-based tests, to external instances. Previously, we would need to create a new test or implement a more complex design if we wanted to test both a container instance and an external service instance (i.

Continue reading ❯

FEATURESCAMEL

Upcoming changes to the consumer on Kafka component

, by

We recently started to review, investigate and fix reliability issues with the Kafka component. As part of that, we refactored the code to avoid problematic concurrency patterns, remove calls to deprecated Kafka client code and simplify the overall maintainability of the code. This led to many changes in the internal implementation of the component, which we will talk about in this blog post. Motivation The ground work related to these changes can be traced back to the following set of issues reported on our Jira.

Continue reading ❯

FEATURESCAMEL

New committers to Apache Camel

, by

We’re happy to announce that our little caravan has been enriched by two new committers. The Camel project warmly welcomes Jiri Ondrusek and Jeremy Ross. Jiri Ondrusek’s has been contributing to Camel, Camel Spring Boot, and Camel Quarkus for a while now, and Jeremy Ross has been doing stellar work on the Salesforce component, his expertise in Salesforce will help us keep up with frequent changes made on that platform.

Continue reading ❯

CAMELCOMMITTERS

Introducing Camel-AWS2-Eventbridge component

, by

In Camel 3.6.0 we will introduce the camel-aws2-eventbridge among others new cool components. The aim of this blog post is showing what you can do with the Eventbridge AWS Service and the related camel component. What is AWS Eventbridge? The definition from the AWS official website is the following: Amazon EventBridge is a serverless event bus that makes it easy to connect applications together using data from your own applications, integrated Software-as-a-Service (SaaS) applications, and AWS services.

Continue reading ❯

CAMEL