== Camel Example Main Artemis

This example shows how to run Camel standalone via the built-in Main class.
The example requires a running Apache ActiveMQ Artemis broker running.

The example also demonstrates how you can configure the Camel application
via Camel built-in dependency-injection that supports binding via the
`@BindToRegistry`, `@BeanInject` and `@PropertyInject` annotations.

Also notice how you can configure Camel in the `application.properties` file.

The example also demonstrates how you can configure the ActiveMQ Artemis JMS `ConnectionFactory`
via two different styles

- via `@BindToRegistry` from Java source code in the `MyConfiguration.java` source file
- via `application.properties` and the `camel-main-maven-plugin`
  that performs classpath scanning to auto-detect the JMS client and prepare for autowiring
  by generating the `META-INF/services/org/apache/camel/autowire.properties` file.

=== Generating tooling meta-data

The `camel-main-maven-plugin` is used for pre-scanning your project and prepare
autowiring and sprint boot tooling support by classpath scanning.

You can run manually via

    mvn camel-main:generate

However this example is using this plugin to generate autowiring for Apache Artemis,
which are generated in `target/classes/META-INF/services/org/apache/camel/autowire.properties`.

See also more details in `application.properties`

=== How to run

First install https://activemq.apache.org/components/artemis/[Apache ActiveMQ Artemis]
and create a broker, such as `mybroker`, and create the admin user as `admin` as username
and `admin` as password:

    bin/artemis create mybroker
    cd mybroker
    bin/artemis run

Then you can run this example using

    mvn camel-main:generate camel:run

=== Help and contributions

If you hit any problem using Camel or have some feedback, then please
https://camel.apache.org/support.html[let us know].

We also love contributors, so
https://camel.apache.org/contributing.html[get involved] :-)

The Camel riders!
