receiveNoWait does not guarantee a message will be received.

You would need to use the one with a timeout value, to have client
poll server for new messages.

On Mon, Nov 18, 2013 at 12:23 PM, cristisor <cristisor...@yahoo.com> wrote:
> I found out the problem which was making my test not reach the onComplete
> syncProcessor but I am having another issue now. Inside the processor I use
> producer.sendBody(buildDurableSubscription(register), holder);, where
> producer is created in the context.xml with <camel:template id="producer" />
> and
> return consumer.receiveBodyNoWait(buildDurableSubscription(register),
> SettlementHolder.class);, where the consumer is created with
> <camel:consumerTemplate id="consumer"/>
>
> to put an exchange on a persistent queue, so that in case of power failure
> or any other reason I can have the exchange after a restart, and then to
> receive it back and process it after onCompletion. The problem is that
> sometimes the first time when the "consumer.receiveBodyNoWait" is invoked it
> returns null, but if I invoke it twice the second invocation will return the
> pending exchange. This is the logging:
> first invocation returns null:
> 12:56:54.628 [Camel (camelContextTransactionToDBPublisher) thread #2 -
> OnCompletion] DEBUG org.apache.camel.impl.ConsumerCache - <<<<
> Endpoint[activemq://queue:masterDataExport.transactionToDBPublisher.synchronizedSettlement.register1]
> 12:56:54.631 [Camel (camelContextTransactionToDBPublisher) thread #2 -
> OnCompletion] DEBUG o.a.activemq.ActiveMQMessageConsumer - remove:
> ID:pc-clucutar-63598-1384772199184-2:1:1:3, *lastDeliveredSequenceId:0*
>
> second invocation returns the object:
> 12:57:05.134 [Camel (camelContextTransactionToDBPublisher) thread #2 -
> OnCompletion] DEBUG org.apache.camel.impl.ConsumerCache - <<<<
> Endpoint[activemq://queue:masterDataExport.transactionToDBPublisher.synchronizedSettlement.register1]
> 12:57:05.138 [Camel (camelContextTransactionToDBPublisher) thread #2 -
> OnCompletion] DEBUG o.a.activemq.ActiveMQMessageConsumer - remove:
> ID:pc-clucutar-63598-1384772199184-2:1:1:4, *lastDeliveredSequenceId:55*
>
> Even though I can see that the queueSize = 1 in JConsole, the retrieve
> operation doesn't retrieve anything and the queueSize doesn't change. The
> second call retrieves the exchange and queueSize becomes 0.
>
> Any idea?
>
>
>
> --
> View this message in context: 
> http://camel.465427.n5.nabble.com/onCompletion-not-triggerd-in-testing-tp5743163p5743434.html
> Sent from the Camel - Users mailing list archive at Nabble.com.



-- 
Claus Ibsen
-----------------
Red Hat, Inc.
Email: cib...@redhat.com
Twitter: davsclaus
Blog: http://davsclaus.com
Author of Camel in Action: http://www.manning.com/ibsen

Reply via email to