Thanks Claus. I haven't done anything special to configure a DeadLetterChannel. I assume that means I get the default settings from here http://camel.apache.org/dead-letter-channel.html (try up to 5 times 1 second apart)?
Are messages guaranteed to stay in order if the first message goes into the DeadLetterChannel? I have observed the first message seems to always be delivered first even when the exception below happens. Is there an easy way to know if all components/processors in a CamelContext are started? I can easily get the CamelContext injected into the producer bean, but I'm not sure what components I would need to check isStarted on before sending a message. Claus Ibsen-2 wrote: > > Hi > > Yeah its a race condition. You can configure your timer fire bean to > wait eg some longer before it fires the first message. > > As long as you use the DeadLetterChannel you should in fact not worry > as it does redeliveries so in the next attempt it will usually succeed > as the producer is started in the meantime. However if you disable > redelivery etc. then the first message will not be delivered and lost. > > But it would be best to wait a little before sending the very first > message. > > Otherwise you can use some Camel API to find the processor and test > whether it is started with: isStarted() > > > On Wed, May 6, 2009 at 4:36 PM, ariekenb <[email protected]> > wrote: >> >> I two beans named producer and consumer. Producer starts a >> java.util.Timer >> in its init method to pop every 100 ms and send a message to a SEDA queue >> (using a ProducerTemplate it got from @EndpointInject). Consumer has a >> method to receive messages from the queue. Here's the camel route: >> >> <camel:camelContext >> id="test"> >> >> <camel:endpoint >> id="sedaEndpoint" >> uri="seda:test" /> >> >> <camel:route> >> <camel:from >> uri="sedaEndpoint" /> >> <camel:to >> >> uri="bean:consumer?methodName=processMessage" /> >> </camel:route> >> >> </camel:camelContext> >> >> >> I find sometimes just after Producer sends its first message, I get this >> error logged. This happens before Consumer has received any messages: >> >> 09:22:35,087 | ERROR | da:test thread:1 | DeadLetterChannel >> | >> rg.apache.camel.processor.Logger 203 | Failed delivery for exchangeId: >> ID-swim4/48409-1241619754977/0-0. On delivery attempt: 0 caught: >> java.lang.IllegalStateException: No producer, this processor has not been >> started! >> java.lang.IllegalStateException: No producer, this processor has not been >> started! >> at >> org.apache.camel.processor.SendProcessor.process(SendProcessor.java:78) >> at >> org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:68) >> at >> org.apache.camel.processor.DeadLetterChannel.process(DeadLetterChannel.java:185) >> at >> org.apache.camel.processor.DeadLetterChannel.process(DeadLetterChannel.java:132) >> at >> org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:68) >> at >> org.apache.camel.processor.UnitOfWorkProcessor.process(UnitOfWorkProcessor.java:52) >> at >> org.apache.camel.component.seda.SedaConsumer.run(SedaConsumer.java:69) >> at java.lang.Thread.run(Thread.java:619) >> >> >> This doesn't seem to cause anything bad to happen. Even when this >> exception >> happens, Consumer still receives all messages from Producer in order. >> >> I'm just wondering why this happens. Is there a race condition during >> startup so that Producer can get its endpoint injected before camel is >> ready >> to route messages to Consumer? Should I be concerned about this? >> -- >> View this message in context: >> http://www.nabble.com/SEDA-Component-Exception%3A-No-producer%2C-this-processor-has-not-been-started%21-tp23407604p23407604.html >> Sent from the Camel - Users (activemq) mailing list archive at >> Nabble.com. >> >> > > > > -- > Claus Ibsen > Apache Camel Committer > > Open Source Integration: http://fusesource.com > Blog: http://davsclaus.blogspot.com/ > Twitter: http://twitter.com/davsclaus > Apache Camel Reference Card: > http://refcardz.dzone.com/refcardz/enterprise-integration > Interview with me: > http://architects.dzone.com/articles/interview-claus-ibsen-about?mz=7893-progress > > -- View this message in context: http://www.nabble.com/SEDA-Component-Exception%3A-No-producer%2C-this-processor-has-not-been-started%21-tp23407604p23409362.html Sent from the Camel - Users (activemq) mailing list archive at Nabble.com.
