Claus Ibsen created CAMEL-11124:
-----------------------------------
Summary: camel-reactive-streams - Allow to silently ignore
discarded messages
Key: CAMEL-11124
URL: https://issues.apache.org/jira/browse/CAMEL-11124
Project: Camel
Issue Type: Improvement
Components: camel-reactive-streams
Affects Versions: 2.19.0
Reporter: Claus Ibsen
If you want to discard messages and use a policy of
{code}
.to("reactive-streams:inbox?backpressureStrategy=LATEST");
{code}
Then Camel will thrown an exception if its discarded
{code}
java.lang.IllegalStateException: Exchange
Exchange[ID-davsclaus-air-52789-1491737146614-0-450] discarded by backpressure
strategy LATEST
at
org.apache.camel.component.reactive.streams.engine.CamelSubscription.publish(CamelSubscription.java:235)
at
org.apache.camel.component.reactive.streams.engine.CamelPublisher.publish(CamelPublisher.java:98)
at
org.apache.camel.component.reactive.streams.engine.DefaultCamelReactiveStreamsService.sendCamelExchange(DefaultCamelReactiveStreamsService.java:123)
at
org.apache.camel.component.reactive.streams.ReactiveStreamsProducer.process(ReactiveStreamsProducer.java:44)
at
org.apache.camel.processor.SendProcessor.process(SendProcessor.java:145)
at
org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:541)
at
org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:198)
at org.apache.camel.processor.Pipeline.process(Pipeline.java:120)
at org.apache.camel.processor.Pipeline.process(Pipeline.java:83)
at
org.apache.camel.processor.DelayProcessorSupport.processDelay(DelayProcessorSupport.java:100)
at
org.apache.camel.processor.DelayProcessorSupport.process(DelayProcessorSupport.java:168)
at
org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:541)
at
org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:198)
at
org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:198)
at
org.apache.camel.component.seda.SedaConsumer.sendToConsumers(SedaConsumer.java:298)
at
org.apache.camel.component.seda.SedaConsumer.doRun(SedaConsumer.java:207)
at
org.apache.camel.component.seda.SedaConsumer.run(SedaConsumer.java:154)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
{code}
Which is likely not something you want as you told it to just keep latest.
We should allow the user to deal with the discarded messages if he/she needs to
in some other way.
And we should maybe also keep runtime statistics of the number of discarded
messages so this can be used for monitoring.
Also we should introduce a specific CamelReactiveException so you can configure
Camels error handler to react on it.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)