Hi

I got an issue with the ProducerTemplate used inside a bean
The Bean class called Resolvement.class injects the ProducerTemplate as follows:


@EndpointInject

private ProducerTemplate producer;

inside the bean resolve() method, I do then use this producer like this:

producer.requestBodyAndHeader(...)

The method of the bean class is called by a camel route as follows:

.split(simple("${body}"), new CSVFileAggregator())

.parallelProcessing()

.bean(Resolvement.class, "resolve")

That normally works fine!
But in some cases, I get an error like this:
Caused by: java.lang.IllegalStateException: No producer, this processor has not 
been started: ProducerCache for source: toD20, capacity: 1000
              at 
org.apache.camel.support.cache.DefaultProducerCache.doInAsyncProducer(DefaultProducerCache.java:300)
              at 
org.apache.camel.processor.SendDynamicProcessor.process(SendDynamicProcessor.java:182)
              at 
org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$SimpleTask.run(RedeliveryErrorHandler.java:477)
              at 
org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.executeFromQueue(DefaultReactiveExecutor.java:212)
              at 
org.apache.camel.impl.engine.DefaultReactiveExecutor.executeFromQueue(DefaultReactiveExecutor.java:77)
              at 
org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.await(DefaultAsyncProcessorAwaitManager.java:96)
              at 
org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process(DefaultAsyncProcessorAwaitManager.java:85)
              at 
org.apache.camel.impl.engine.SharedCamelInternalProcessor.process(SharedCamelInternalProcessor.java:108)
              at 
org.apache.camel.support.cache.DefaultProducerCache.send(DefaultProducerCache.java:199)
              at 
org.apache.camel.impl.engine.DefaultProducerTemplate.send(DefaultProducerTemplate.java:176)
              at 
org.apache.camel.impl.engine.DefaultProducerTemplate.send(DefaultProducerTemplate.java:172)
              at 
org.apache.camel.impl.engine.DefaultProducerTemplate.send(DefaultProducerTemplate.java:158)
              at 
org.apache.camel.impl.engine.DefaultProducerTemplate.sendBodyAndHeader(DefaultProducerTemplate.java:229)

That means for me, in some situations the Producer is not properly initialized.

My question is:
How can I make sure the producer is initialized properly?
Is this a synchronization issue cause I do use parallelProcessing and I must 
use some synchronizing strategies?
Or what could be the problem or the method to help for this issue?

Camel Version: 3.20.6
Java: 17
Sping Boot 2.7.12

Reply via email to