[[reactive-executor-vertx-component]]
= Reactive Executor Vert.x Component
//THIS FILE IS COPIED: EDIT THE SOURCE FILE:
:page-source: components/camel-reactive-executor-vertx/src/main/docs/reactive-executor-vertx.adoc
:docTitle: Reactive Executor Vert.x
:artifactId: camel-reactive-executor-vertx
:description: Reactive Executor for camel-core using Vert.x
:since: 3.0
:supportLevel: Experimental

*Since Camel {since}*

The camel-reactive-executor-vertx is a VertX based implementation of the `ReactiveExecutor` SPI.

By default Camel uses its own reactive engine for routing messages, but you can plugin
different engines via a SPI interface. This is a VertX based plugin that uses the VertX event loop
for processing message during routing.

[NOTE]
====
At this time this component is an experiment so use it with care.
====

== VertX instance

This implementation will by default create a default `io.vertx.core.Vertx` instance to be used.
However you can configure an existing instance using the getter/setter on the `VertXReactiveExecutor` class.

== Auto detection from classpath

To use this implementation all you need to do is to add the `camel-reactive-executor-vertx` dependency to the classpath,
and Camel should auto-detect this on startup and log as follows:

[source,text]
----
Using ReactiveExecutor: org.apache.camel.reactive.vertx.VertXReactiveExecutor@2a62b5bc
----

== Manual enabling

If you use OSGi or the implementation is not added to the classpath, you need to enable this explict such:

[source,java]
----
CamelContext camel = ...

camel.setReactiveExecutor(new VertXReactiveExecutor());
----

Or in XML DSL (spring or blueprint XML file) you can declare the factory as a `<bean>`:

[source,xml]
----
<bean id="vertxReactiveExecutor" class="org.apache.camel.reactive.vertx.VertXReactiveExecutor"/>
----

and then Camel should detect the bean and use the reactive executor.
