[
https://issues.apache.org/jira/browse/CAMEL-18196?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17554955#comment-17554955
]
Claus Ibsen commented on CAMEL-18196:
-------------------------------------
You are welcome to send a PR to update the documentation
https://camel.apache.org/community/contributing/
> POJO-Producing: java.lang.IllegalStateException: Producer has not been started
> ------------------------------------------------------------------------------
>
> Key: CAMEL-18196
> URL: https://issues.apache.org/jira/browse/CAMEL-18196
> Project: Camel
> Issue Type: Bug
> Components: camel-core, documentation
> Affects Versions: 3.17.0
> Reporter: David Url
> Priority: Major
>
> I was following the POJO-Producing seciton in the manual in order to have
> transport agnostic spring beans that produce events.
> (https://camel.apache.org/manual/pojo-producing.html#_hiding_the_camel_apis_from_your_code)
> My setup looks like this:
> {code}
> @Component
> public class RecorderSender {
> public static final String ENDPOINT_NAME =
> "direct:recorderSender?block=true&synchronous=true";
> private ProducerEndpoint<byte[]> endpoint;
> @Produce(RecorderSender.ENDPOINT_NAME)
> public void setEndpoint(final ProducerEndpoint<byte[]> endpoint) {
> this.endpoint = endpoint;
> }
> public void write(final byte[] payload) {
> this.endpoint.send(payload);
> }
> }
> @InOnly
> public interface ProducerEndpoint<T> {
> void send(T object);
> }
> {code}
> However once my spring bean is initialized it starts calling
> {{RecorderSender.write(byte[])}} at a time where the CamelContext is not yet
> initialized, and I get this exception:
> {noformat}
> Exception in thread "connector-1" java.lang.IllegalStateException: Producer
> has not been started:
> Producer[direct://recorderSender?block=true&synchronous=true]
> at
> org.apache.camel.processor.EventNotifierProducer.process(EventNotifierProducer.java:54)
> at
> org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process(DefaultAsyncProcessorAwaitManager.java:83)
> at
> org.apache.camel.support.DefaultAsyncProducer.process(DefaultAsyncProducer.java:41)
> at
> org.apache.camel.component.bean.AbstractCamelInvocationHandler$1.call(AbstractCamelInvocationHandler.java:189)
> at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
> at
> org.apache.camel.component.bean.AbstractCamelInvocationHandler.doInvoke(AbstractCamelInvocationHandler.java:207)
> at
> org.apache.camel.component.bean.AbstractCamelInvocationHandler.invokeProxy(AbstractCamelInvocationHandler.java:169)
> at
> org.apache.camel.component.bean.CamelInvocationHandler.doInvokeProxy(CamelInvocationHandler.java:43)
> at
> org.apache.camel.component.bean.AbstractCamelInvocationHandler.invoke(AbstractCamelInvocationHandler.java:81)
> at jdk.proxy2/jdk.proxy2.$Proxy99.send(Unknown Source)
> at com.example.RecorderSender.write(RecorderSender.java:45)
> at
> java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
> at
> java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
> at java.base/java.lang.Thread.run(Thread.java:833)
> {noformat}
> I assumed that the properties {{block}} and {{synchronous}} would ensure that
> the call is blocking, regardless of the initialization state of the
> CamelContext.
> I'm not sure whether this is actually a bug, or intentional behavior. But it
> would be nice to have the POJO Producing guide mentioning this behavior, or
> hinting at a better solution.
--
This message was sent by Atlassian Jira
(v8.20.7#820007)