This project uses Quarkus, the Supersonic Subatomic Java Framework.
If you want to learn more about Quarkus, please visit its website: https://quarkus.io/ .
##Context
CRUD application with Quarkus, which use the RestClient to interact with external WebService exposed
by https://api.tvmaze.com/api that return tv series episodes.
The application, using a Proxy class, create an HTTP request, process the result and return the HTTP response.
Example request: http://localhost:8080/tvseries?title=game of thrones
Fault Tolerance specification using @Fallback is to focus on the following aspects:
- Timeout: Define a duration for a timeout
- Retry: Define criteria on when to retry -Fallback: provide an alternative solution for a failed execution.
- CircuitBreaker: offer a way to fail fast by automatically failing execution to prevent the system overloading and indefinite wait or timeout by the clients.
- Bulkhead: isolate failures in part of the system while the rest part of the system can still function.
It use of OpenAPI for write documentation like Swagger: after compile the application,
have to digit on browser: http://localhost:8080/q/openapi
-
In the application.properties we add proxy properties for interact with external WebService of
https://api.tvmaze.com/api -
For show the Swagger you have to digit:
http://localhost:8080/q/swagger-ui -
For Packaging the application, digit: mvn compile package After this, running the application digiting: java -jar target/quarkus-app/rest-client-rest-easy-1.0.0-SNAPSHOT.jar
Extension:
- RESTEasy: write rest service
- OpenAPI: shows Apis documentation and Swagger
- Rest-Client: use a proxy class for make http request
- Smallrye Fault Tolerance: handles fault-tolerant for network services
You can run your application in dev mode that enables live coding using:
./mvnw compile quarkus:devNOTE: Quarkus now ships with a Dev UI, which is available in dev mode only at http://localhost:8080/q/dev/.
The application can be packaged using:
./mvnw packageIt produces the quarkus-run.jar file in the target/quarkus-app/ directory.
Be aware that it’s not an über-jar as the dependencies are copied into the target/quarkus-app/lib/ directory.
The application is now runnable using java -jar target/quarkus-app/quarkus-run.jar.
If you want to build an über-jar, execute the following command:
./mvnw package -Dquarkus.package.type=uber-jarThe application, packaged as an über-jar, is now runnable using java -jar target/*-runner.jar.
You can create a native executable using:
./mvnw package -PnativeOr, if you don't have GraalVM installed, you can run the native executable build in a container using:
./mvnw package -Pnative -Dquarkus.native.container-build=trueYou can then execute your native executable with: ./target/rest-client-rest-easy-1.0.0-SNAPSHOT-runner
If you want to learn more about building native executables, please consult https://quarkus.io/guides/maven-tooling.
- REST Client Classic (guide): Call REST services
- RESTEasy Classic (guide): REST endpoint framework implementing JAX-RS and more
Invoke different services through REST with JSON
Easily start your RESTful Web Services