Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Direct Component

The direct: component provides direct, synchronous invocation of any consumers when a producer sends a message exchange.
This endpoint can be used to connect existing routes in the same camel context.

...

Code Block
languagetext
direct:someName[?options]

Where someName can be any string to that uniquely identify identifies the endpoint.

Options

Name

Default Value

Description

 

allowMultipleConsumers

true

@deprecated

If set to false, then when a second consumer is started on the endpoint, an IllegalStateException is thrown.

Will be removed in Camel 2.1: Direct endpoint does not support multiple consumers.

 

block

false

Camel 2.11.1: If sending a message to a direct endpoint which has no active consumer, then we can tell the producer to block and wait for the will block for timeout milliseconds waiting for a consumer to become active.

 

timeout

30000

Camel 2.11.1: The timeout value, in milliseconds, to use if block is enabled.

 

, when enabled, for an active consumer.

failIfNoConsumers

true

Camel 2.16.0: Indicates whether the producer should fail by throwing an exception when sending to a DIRECT direct endpoint with no active consumers.

 

You

...

can

...

append

...

query

...

options

...

to

...

the

...

URI

...

in

...

the

...

following

...

format

...

?option=value&option=value&...

 

Samples

In the route below we use the direct component to link the two routes together:

Code Block
languagejava
from("activemq:queue:order.in")
    .to("bean:orderServer?method=validate")
    .to("direct:processOrder?block=true&timeout=5000");

from("direct:processOrder")
    .to("bean:orderService?method=process")
    .to("activemq:queue:order.out");

...

Code Block
languagexml
   <route>
     <from uri="activemq:queue:order.in"/>
     <to uri="bean:orderService?method=validate"/>
     <to uri="direct:processOrder?failIfNoConsumers=false"/>
  </route>

  <route>
     <from uri="direct:processOrder"/>
     <to uri="bean:orderService?method=process"/>
     <to uri="activemq:queue:order.out"/>
  </route>    

...