generated from camel.apache.org/component
2
Home
gitea_admin edited this page 2026-03-11 14:37:37 +00:00
Table of Contents
Dynamic Router
The Dynamic Router component routes exchanges to recipients, and the recipients (and their rules) may change at runtime.
Metadata
| Property | Value |
|---|---|
| Scheme | dynamic-router |
| Support Level | Stable |
| Labels | messaging,core |
| Version | 4.10.2 |
Maven Dependency
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-dynamic-router</artifactId>
<version>4.10.2</version>
</dependency>
Endpoint Properties
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
channel |
string | Channel for the Dynamic Router. For example, if the Dynamic Router URI is dynamic-router://test, then the channel is test. Channels are a way of keeping routing participants, their rules, and exchanges logically separate from the participants, rules, and exchanges on other channels. This can be seen as analogous to VLANs in networking. | ||
aggregationStrategy |
string | Refers to an AggregationStrategy to be used to assemble the replies from the multicasts, into a single outgoing message from the Multicast. By default, Camel will use the last reply as the outgoing message. You can also use a POJO as the AggregationStrategy. | ||
aggregationStrategyBean |
object | Refers to an AggregationStrategy to be used to assemble the replies from the multicasts, into a single outgoing message from the Multicast. By default, Camel will use the last reply as the outgoing message. You can also use a POJO as the AggregationStrategy. | ||
aggregationStrategyMethodAllowNull |
boolean | false |
If this option is false then the aggregate method is not used if there was no data to enrich. If this option is true then null values is used as the oldExchange (when no data to enrich), when using POJOs as the AggregationStrategy | |
aggregationStrategyMethodName |
string | You can use a POJO as the AggregationStrategy. This refers to the name of the method that aggregates the exchanges. | ||
cacheSize |
integer | 100 |
When caching producer endpoints, this is the size of the cache. Default is 100. | |
executorService |
string | Refers to a custom Thread Pool to be used for parallel processing. Notice that, if you set this option, then parallel processing is automatically implied, and you do not have to enable that option in addition to this one. | ||
executorServiceBean |
object | Refers to a custom Thread Pool to be used for parallel processing. Notice that, if you set this option, then parallel processing is automatically implied, and you do not have to enable that option in addition to this one. | ||
ignoreInvalidEndpoints |
boolean | false |
Ignore the invalid endpoint exception when attempting to create a producer with an invalid endpoint. | |
onPrepare |
string | Uses the Processor when preparing the org.apache.camel.Exchange to be sent. This can be used to deep-clone messages that should be sent, or to provide any custom logic that is needed before the exchange is sent. This is the name of a bean in the registry. | ||
onPrepareProcessor |
object | Uses the Processor when preparing the org.apache.camel.Exchange to be sent. This can be used to deep-clone messages that should be sent, or to provide any custom logic that is needed before the exchange is sent. This is a Processor instance. | ||
parallelAggregate |
boolean | false |
If enabled then the aggregate method on AggregationStrategy can be called concurrently. Notice that this would require the implementation of AggregationStrategy to be implemented as thread-safe. By default, this is false, meaning that Camel synchronizes the call to the aggregate method. Though, in some use-cases, this can be used to archive higher performance when the AggregationStrategy is implemented as thread-safe. | |
parallelProcessing |
boolean | false |
If enabled, then sending via multicast occurs concurrently. Note that the caller thread will still wait until all messages have been fully processed before it continues. It is only the sending and processing of the replies from the multicast recipients that happens concurrently. When parallel processing is enabled, then the Camel routing engine will continue processing using the last used thread from the parallel thread pool. However, if you want to use the original thread that called the multicast, then make sure to enable the synchronous option as well. | |
recipientMode |
string | firstMatch |
Recipient mode: firstMatch or allMatch | |
shareUnitOfWork |
boolean | false |
Shares the org.apache.camel.spi.UnitOfWork with the parent and each of the sub messages. Multicast will, by default, not share a unit of work between the parent exchange and each multicasted exchange. This means each sub exchange has its own individual unit of work. | |
stopOnException |
boolean | false |
Will stop further processing if an exception or failure occurred during processing of an org.apache.camel.Exchange and the caused exception will be thrown. Will also stop if processing the exchange failed (has a fault message), or an exception was thrown and handled by the error handler (such as using onException). In all situations, the multicast will stop further processing. This is the same behavior as in the pipeline that is used by the routing engine. The default behavior is to not stop, but to continue processing until the end. | |
streaming |
boolean | false |
If enabled, then Camel will process replies out-of-order (e.g., in the order they come back). If disabled, Camel will process replies in the same order as defined by the multicast. | |
synchronous |
boolean | false |
Sets whether synchronous processing should be strictly used. When enabled then the same thread is used to continue routing after the multicast is complete, even if parallel processing is enabled. | |
timeout |
integer | -1 |
Sets a total timeout specified in milliseconds, when using parallel processing. If the Multicast has not been able to send and process all replies within the given timeframe, then the timeout triggers and the Multicast breaks out and continues. Notice that, if you provide a TimeoutAwareAggregationStrategy, then the timeout method is invoked before breaking out. If the timeout is reached with running tasks still remaining, certain tasks (for which it is difficult for Camel to shut down in a graceful manner) may continue to run. So use this option with a bit of care. | |
warnDroppedMessage |
boolean | false |
Flag to log a warning if no predicates match for an exchange. | |
lazyStartProducer |
boolean | false |
Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. |