Have you profiled the app with a tool like YourKit to identify the hot
spots in your Camel runtime?

Claude

On Wed, Mar 12, 2025 at 2:55 AM Hempleman, Matthew (GE Vernova)
<matthew.hemple...@gevernova.com.invalid> wrote:

> Hello Camel Community,
>
> I am in the process of developing an application to provide filtered
> change data capture for a proprietary database. The initial plan is to use
> the following stack:
>
>
>   *   Spring Boot
>   *   Debezium to create standardized messages from the WAL (we may use
> the app for other dbs in the future)
>   *   RxJava to efficiently process database change events based on the
> filter criteria
>   *   Apache Camel to forward events of interest to subscribers. This will
> allow the application to forward events to a variety of endpoints.
>
> In my POC app, I'm having trouble meeting performance requirements and
> Camel is the bottleneck. For example, in one functional test suite I run
> two tests. Each test generates 3000000 events for a relatively realistic db
> stream and pushes them through the processing engine as fast as
> backpressure will allow. The first test simply counts events as they exit
> the RxJava event processing stream. The second test forwards events to
> Camel mock endpoints using the Camel Reactive Streams Service. Processing
> time in the first test is ~1 second. The second test takes > 1 minute. This
> is the only Difference:
>
> var subscriber = camelRxService.streamSubscriber("camelMock",
> DatabaseChangeMessage.class);
> dataFlow.subscribe(subscriber);
>
> And then I wait for all the messages to reach the mock endpoint. I've
> played around with batching and other performance tweaks without much
> success. Is there just too much overhead associated with Camel
> messages/exchanges for this use case? I know it would be faster with
> Quarkus, but I'm stuck with Spring Boot for now.
>
> Any suggestions will be appreciated.
>
> Thank you!
>

Reply via email to