ldawson created CAMEL-17507:
-------------------------------
Summary: No error handler invoked on exception with
multipleConsumer=true and POJO @Consume Annotation
Key: CAMEL-17507
URL: https://issues.apache.org/jira/browse/CAMEL-17507
Project: Camel
Issue Type: Bug
Affects Versions: 3.14.0
Reporter: ldawson
I've been trying to figure out how route errors to my own error handler with
the following, seemingly simple configuration, but Camel is swallowing the
exception without routing it to any error handler I configure. I've run out of
ideas. Any help would be much appreciated.
I've got a seda route that supports multiple consumers:
{code:java}
@Component
public class MessageGenerator {
public static final String ERROR_GENERATOR_CHANNEL =
"seda:my-error-generator?multipleConsumers=true&concurrentConsumers=3";
private final FluentProducerTemplate producerTemplate;
public MessageGenerator(FluentProducerTemplate producerTemplate) {
this.producerTemplate = producerTemplate;
}
public void generateMessage() {
producerTemplate
.to(ERROR_GENERATOR_CHANNEL)
.withBody("Hello World")
.asyncSend();
}
}{code}
I've got two separate POJO consumers:
{code:java}
@Configuration
public class MessageConsumer1 {
@Consume(ERROR_GENERATOR_CHANNEL)
void receiveMessage(String message) {
System.out.println("Received message 1: " + message);
throw new NullPointerException("Error generated");
}
}{code}
{code:java}
@Configuration
public class MessageConsumer2 {
@Consume(ERROR_GENERATOR_CHANNEL)
void receiveMessage(String message) {
System.out.println("Received message 2: " + message);
}
}{code}
When I run the following example, the `NullPointerException` gets swallowed by
the underlying Camel `MulticastProcessor` as we can see in the debug logs:
```
Received message 2: Hello World
Received message 1: Hello World
2022-01-15 13:40:23.711 DEBUG 32945 --- [error-generator]
o.a.camel.processor.MulticastProcessor : Message exchange has failed:
Multicast processing failed for number 0 for exchange: Exchange[] Exception:
java.lang.NullPointerException: Error generated
2022-01-15 13:40:23.711 DEBUG 32945 --- [error-generator]
o.a.camel.processor.MulticastProcessor : Message exchange has failed:
Multicast processing failed for number 0 for exchange: Exchange[] Exception:
java.lang.NullPointerException: Error generated
```
The exception only gets logged as debug and never gets propagated to any error
handler I set up.
**Any thoughts on how I could receive the error in my own error handler rather
than Camel swallowing the exception as a debug statement?**
*Note1:* I've attempted many variations on both default error handling and
default dead letter handling to no avail. I could just be doing it wrong...
*Note2:* that I'm using Spring[Boot] here too, hence the `@Configuration`
annotation.
Note3: I've created a stack overflow question for this[
here|https://stackoverflow.com/questions/70725713/camel-no-error-handler-invoked-on-exception-with-multipleconsumer-true-and-pojo].
--
This message was sent by Atlassian Jira
(v8.20.1#820001)