Hi,
I've been using the following code for creating an executor service that
discards the oldest invocations when the queue is full.
ThreadPoolBuilder poolBuilder = new ThreadPoolBuilder(getContext());
singleSplitExecutorService =
poolBuilder.poolSize(1).maxPoolSize(1).maxQueueSize(200)
.rejectedPolicy(ThreadPoolRejectedPolicy.DiscardOldest)
.build("singleSplitExecutorService");
Then I'm using that executor service in a wiretap:
.wireTap(split(getMessageSplitRouteId())).executorService(singleSplitExecutorService)
During migrating to Camel 4 I noticed, that Discard and DiscardOldest has been
removed and only Abort and CallerRuns are available now. However with
CallerRuns the ordering of invocations wouldn't be correct anymore in case the
queue is full and with Abort I'd have unwanted exceptions causing our routes to
stop processing data.
Is there a suggested alternative way to achieve the same functionality?
Why has it been removed from camel in the first place? Java 17 still comes with
a default implementation of the RejectedExecutionHandler for discarding, so I
don't see a reason for that.
I know that I can create the executor service myself with plain Java, but I
still wanted to ask if I'm missing something in Camel APIs.
Jannik