Hello community, I am currently working on a feature within the Camel project that involves processing Kafka messages (String) and performing a query based on that message. Initially, I implemented a classic route that called a service method responsible for executing the query. However, I encountered an issue with the size of the query result, as the memory couldn't handle such a massive amount of data.
In response to this challenge, I devised an alternative solution that might be considered unconventional. The approach involves querying the database multiple times and retrieving the results in manageable chunks. Consequently, the route needs to be executed multiple times. The current structure of my route is as follows: from(getInput()) .routeId(getRouteId()) .bean(Service.class, "extractDataInChunks") .choice() .when(header(PAGINATION_END_FLAG).isEqualTo(true)).to(getOutput()) .when(header(PAGINATION_END_FLAG).isEqualTo(false)).to(getOutput(),directUri(getRouteId())); //re-execute the route with offset = offset+limit The extractDataInChunks method queries the database with a parameterized limit (chunk size) and an offset that ranges from 0 to X * limit. The PAGINATION_END_FLAG is a Camel header, initially set to false, and is switched to true by the extractDataInChunks method if the size of the query result is 0. I would appreciate feedback on whether this solution adheres to good Camel practices, specifically the consideration of implementing business logic at the route level. Additionally, I am curious if there are any built-in Enterprise Integration Patterns (EIPs) in Camel that might be more suitable for my business requirements. Thank you for your insights.