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

Reply via email to