== Camel Basic Example

=== Introduction

This is a very basic example that shows how to get started with Camel.

This example shows you that Camel can be used in standalone mode
as a _public static void main_ application.

The example has only 1 java file in the link:../basic/src/main/java/org/apache/camel/example/basic/CamelBasic.java[`CamelBasic.java`] located in the src folder.
There is code comments explaining in more details.

=== Build

You will need to compile this example first:

[source,sh]
----
$ mvn compile
----

=== Run

To run the example type

[source,sh]
----
$ mvn camel:run
----

To stop the example hit `ctrl+c`

You can also run the example from your editor such as Eclipse, IDEA etc,
by opening the class link:../basic/src/main/java/org/apache/camel/example/basic/CamelBasic.java[org.apache.camel.example.basic.CamelBasic.java]
and then right click, and chose run java application.

=== Help and contributions

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

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

The Camel riders!
