Hello. Today, I tried to send messages in parallel inside of my component. It worked fine in my tests where I just used a few messages and a few destinations. But in my spring boot example, where I have several destinations, and a million messages, it broke -- fast! Here is a portion of my stack trace:
Caused by: java.lang.NullPointerException: null at org.apache.camel.impl.engine.SharedCamelInternalProcessor.process(SharedCamelInternalProcessor.java:206) ~[camel-base-engine-3.15.0-SNAPSHOT.jar:3.15.0-SNAPSHOT] at org.apache.camel.impl.engine.SharedCamelInternalProcessor$1.process(SharedCamelInternalProcessor.java:111) ~[camel-base-engine-3.15.0-SNAPSHOT.jar:3.15.0-SNAPSHOT] at org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process(DefaultAsyncProcessorAwaitManager.java:83) ~[camel-base-engine-3.15.0-SNAPSHOT.jar:3.15.0-SNAPSHOT] at org.apache.camel.impl.engine.SharedCamelInternalProcessor.process(SharedCamelInternalProcessor.java:108) ~[camel-base-engine-3.15.0-SNAPSHOT.jar:3.15.0-SNAPSHOT] at org.apache.camel.support.cache.DefaultProducerCache.send(DefaultProducerCache.java:199) ~[camel-support-3.15.0-SNAPSHOT.jar:3.15.0-SNAPSHOT] at org.apache.camel.impl.engine.DefaultProducerTemplate.send(DefaultProducerTemplate.java:176) ~[camel-base-engine-3.15.0-SNAPSHOT.jar:3.15.0-SNAPSHOT] at org.apache.camel.impl.engine.DefaultProducerTemplate.send(DefaultProducerTemplate.java:148) ~[camel-base-engine-3.15.0-SNAPSHOT.jar:3.15.0-SNAPSHOT] at org.apache.camel.impl.engine.DefaultProducerTemplate.send(DefaultProducerTemplate.java:131) ~[camel-base-engine-3.15.0-SNAPSHOT.jar:3.15.0-SNAPSHOT] at org.apache.camel.component.dynamicrouter.DynamicRouterProcessor.lambda$createFilter$1(DynamicRouterProcessor.java:152) ~[camel-dynamic-router-3.15.0-SNAPSHOT.jar:3.15.0-SNAPSHOT] at org.apache.camel.support.AsyncProcessorConverterHelper$ProcessorToAsyncProcessorBridge.process(AsyncProcessorConverterHelper.java:66) ~[camel-support-3.15.0-SNAPSHOT.jar:3.15.0-SNAPSHOT] at org.apache.camel.processor.FilterProcessor.process(FilterProcessor.java:81) ~[camel-core-processor-3.15.0-SNAPSHOT.jar:3.15.0-SNAPSHOT] So, how does the MulticastProcessor get around this type of issue? What is the proper way to parallelize work within Camel? I tried using a parallel stream, as well as completable futures. I even tried to instantiate a MulticastProcessor, but I wasn't configuring it correctly. The performance isn't too bad when I just use a non-parallel stream, but I would prefer to multicast, if possible. Thanks, Steve