Hi

Sounds a bit like the chicken and egg, eg the kafka consumer needs to
create a valid exchange for Camel to start routing.
You can try to set the bridge error handler = true which should catch
internal errors and make a "fake" exchange for Camel to route and have
its error handler react.
But not all components has the option, but take a look and report back.

And if its still a problem then we can log a JIRA to see if we can
deal with exceptions from the deserializer and do something in
camel-kafka.
On Wed, Nov 14, 2018 at 10:24 PM Webster Homer
<webster.ho...@milliporesigma.com> wrote:
>
> I have an application that uses Camel 2.21.1 and Kafka 1.1
>
> I had a bug where the deserializer for the consumer threw an exception when 
> deserializing the message. I could see an exception in the log, but the 
> consumer never handled the exception and the message was throwing an 
> exception each time, forever. Why didn't camel see the exception so that the 
> application code could commit that offset?
>
> This is my consumer endpoint
>                 @EndpointInject(uri = 
> "kafka:{{deep.send.order.email}}?brokers={{deep.notify.kafka.server}}&groupId=orders-enrichment-grp&"+
>                         "autoCommitEnable=false&allowManualCommit=true&" +
>             "maxPollRecords={{deep.kafka.poll.count}}&" +
>                                                 
> "keyDeserializer=org.apache.kafka.common.serialization.StringDeserializer&" +
>                                                 
> "valueDeserializer=com.sial.notifications.kafka.utilities.MessageJSONFormatter")
>
> The problem was in the MessageJSONFormatter and I have fixed the problem. 
> However, I expected that the exception be caught in Camel's kafka consumer 
> and propagated to the global handler where the offset could be committed
>
> How do I address an issue like this in the future?
>
>


-- 
Claus Ibsen
-----------------
http://davsclaus.com @davsclaus
Camel in Action 2: https://www.manning.com/ibsen2

Reply via email to