Book Image

Hands-On Cloud Development with WildFly

By : Tomasz Adamski
Book Image

Hands-On Cloud Development with WildFly

By: Tomasz Adamski

Overview of this book

The book starts by introducing you to WildFly Swarm—a tool that allows you to create runnable microservices from Java EE components. You’ll learn the basics of Swarm operation—creating microservices containing only the parts of enterprise runtime needed in a specific case. Later, you’ll learn how to configure and test those services. In order to deploy our services in the cloud, we’ll use OpenShift. You’ll get to know basic information on its architecture, features, and relationship to Docker and Kubernetes. Later, you’ll learn how to deploy and configure your services to run in the OpenShift cloud. In the last part of the book, you’ll see how to make your application production-ready. You’ll find out how to configure continuous integration for your services using Jenkins, make your application resistant to network failures using Hystrix, and how to secure them using Keycloak. By the end of the book, you’ll have a functional example application and will have practical knowledge of Java EE cloud development that can be used as a reference in your other projects.
Table of Contents (14 chapters)

Using Hystrix

In order to learn Hystrix behavior in practice, we are going to extend customer-gateway service so that it uses Hystrix for its invocations. Later, we are going to make one of our services artificially unresponsive and see how Hystrix behaves. Let's start.

Examples reference: chapter11/customer-gateway-hystrix.

Firstly, we are going to add Hystrix dependency to the pom.xml:

(...)

<dependency>
<groupId>com.netflix.hystrix</groupId>
<artifactId>hystrix-core</artifactId>
<version>${version.hystrix}</version>
</dependency>

(...)

The circuit breaker command is implemented by extending the com.netflix.hystrix.HystrixCommand class. Let's take a look at its usage at the concrete example of our PricingProxy:

(...)

@ApplicationScoped
public class PricingProxy {

(...)

//1
private class GetPriceCommand extends...