== Resilience4j Example

=== Introduction

This example shows how to use Camel with Resilience4j EIP as circuit breaker
in Camel routes

The example includes four sub maven modules that implement

* client (spring boot)
* client2 (camel main)
* service1
* service2

Where client -> service1 client -> service2 (fallback)

=== Configuration

Service1 is configured in the
`+src/main/java/sample/camel/Service1Application.java+` source code.
Service2 is configured in the
`+src/main/resources/application.properties+` properties file.

=== Build

You will need to compile this example first:

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

=== Run the example

Then using three different shells and run service1 and service2 before
the client.

[source,sh]
----
$ cd service1
$ mvn compile spring-boot:run
----

When service1 is ready then start service2

[source,sh]
----
$ cd service2
$ mvn compile camel:run
----

And then start the client that calls service1 every second.

We have provided two clients, one is using Spring Boot, the other Camel Main.
You can run either one of them.

To use Spring Boot

[source,sh]
----
$ cd client
$ mvn compile spring-boot:run
----

Or to use Camel Main

[source,sh]
----
$ cd client2
$ mvn compile camel:run
----

You can then stop service1 and see that the client should fallback to
call service2 in the Resilience EIP circuit breaker. And then start service
1 again and see the Resilience EIP go back to normal.


=== 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!
