[ 
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)

Reply via email to