此内容没有您所选择的语言版本。
Chapter 2. Getting Started with Spring Boot
2.1. Overview of the circuit breaker booster 复制链接链接已复制到粘贴板!
The Netflix/Hystrix circuit breaker enables distributed applications to cope with interruptions to network connectivity and temporary unavailability of backend services. The basic idea of the circuit breaker pattern is that the loss of a dependent service is detected automatically and an alternative behavior can be programmed, in case the backend service is temporarily unavailable.
The Fuse circuit breaker booster consists of two related services:
- A name service, the backend service that returns a name to greet.
-
A greetings service, the frontend service that invokes the name service to get a name and then returns the string,
Hello, NAME
.
In this booster demonstration, the Hystrix circuit breaker is inserted between the greetings service and the name service. If the backend name service becomes unavailable, the greetings service can fall back to an alternative behavior and respond to the client immediately, instead of being blocked while it waits for the name service to restart.
2.2. Prerequisites 复制链接链接已复制到粘贴板!
To build and run the booster demonstration, install the following prerequisites:
- A supported version of the Java Developer Kit (JDK). See the Supported Configurations page for details.
- Apache Maven 3.3.x or later. See the Maven Download page. To learn more about Maven, see Appendix A, Preparing to use Maven.
2.3. Generate the booster project 复制链接链接已复制到粘贴板!
To generate the circuit breaker booster project, perform the following steps:
- Navigate to https://developers.redhat.com/launch.
Click START.
The launcher wizard prompts you to log in to your Red Hat account.
- Click the Log in or register button and then log in.
- On the Launcher page, click the Deploy an Example Application button.
- On the Create Example Application page, type the name, fuse-circuit-breaker, in the Create Example Application as field.
- Click Select an Example.
In the Example dialog, select the Circuit Breaker option. A Select a Runtime dropdown menu appears.
- From the Select a Runtime dropdown, select Fuse.
-
From the version dropdown menu, select 7.3.0 (Red Hat Fuse) (do not select the
2.21.2 (Community)
version). - Click Save.
- On the Create Example Application page, click Download.
-
When you see the Your Application is Ready dialog, click
Download.zip
. Your browser downloads the generated booster project (packaged as a ZIP file). - Use an archive utility to extract the generated project to a convenient location on your local file system.
2.4. Build and run the booster 复制链接链接已复制到粘贴板!
To build and run the booster project, perform the following steps:
Open a shell prompt and build the project from the command line, using Maven:
cd fuse-circuit-breaker
cd fuse-circuit-breaker
Copy to Clipboard Copied! Toggle word wrap Toggle overflow mvn clean package
mvn clean package
Copy to Clipboard Copied! Toggle word wrap Toggle overflow After Maven builds the project, it displays a Build Success message.
Open a new shell prompt and start the name service, as follows:
cd name-service
cd name-service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow mvn spring-boot:run -DskipTests -Dserver.port=8081
mvn spring-boot:run -DskipTests -Dserver.port=8081
Copy to Clipboard Copied! Toggle word wrap Toggle overflow As Spring Boot starts up, you should see output similar to the following:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Open a new shell prompt and start the greetings service, as follows:
cd greetings-service
cd greetings-service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow mvn spring-boot:run -DskipTests
mvn spring-boot:run -DskipTests
Copy to Clipboard Copied! Toggle word wrap Toggle overflow As Spring Boot starts up, you should see output similar to the following:
... 2019-05-06 20:22:19.051 INFO 9729 --- [ main] o.a.c.c.s.CamelHttpTransportServlet : Initialized CamelHttpTransportServlet[name=CamelServlet, contextPath=] 2019-05-06 20:22:19.115 INFO 9729 --- [ main] b.c.e.u.UndertowEmbeddedServletContainer : Undertow started on port(s) 8080 (http) 2019-05-06 20:22:19.123 INFO 9729 --- [ main] com.redhat.fuse.boosters.cb.Application : Started Application in 7.68 seconds (JVM running for 12.66)
... 2019-05-06 20:22:19.051 INFO 9729 --- [ main] o.a.c.c.s.CamelHttpTransportServlet : Initialized CamelHttpTransportServlet[name=CamelServlet, contextPath=] 2019-05-06 20:22:19.115 INFO 9729 --- [ main] b.c.e.u.UndertowEmbeddedServletContainer : Undertow started on port(s) 8080 (http) 2019-05-06 20:22:19.123 INFO 9729 --- [ main] com.redhat.fuse.boosters.cb.Application : Started Application in 7.68 seconds (JVM running for 12.66)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow The greetings service exposes a REST endpoint at the
http://localhost:8080/camel/greetings
URL.Invoke the REST endpoint by either opening the URL in a web browser or by opening another shell prompt and typing the following
curl
command:curl http://localhost:8080/camel/greetings
curl http://localhost:8080/camel/greetings
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Here is the response:
{"greetings":"Hello, Jacopo"}
{"greetings":"Hello, Jacopo"}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow To demonstrate the circuit breaker functionality provided by Camel Hystrix, kill the backend name service by typing Ctrl-C in the shell prompt window where the name service is running.
Now that the name service is unavailable, the circuit breaker kicks in to prevent the greetings service from hanging when it is invoked.
Invoke the greetings REST endpoint by either opening
http://localhost:8080/camel/greetings
in a web browser or by typing the followingcurl
command in another shell prompt window:curl http://localhost:8080/camel/greetings
curl http://localhost:8080/camel/greetings
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Here is the response:
{"greetings":"Hello, default fallback"}
{"greetings":"Hello, default fallback"}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow In the window where the greetings service is running, the log shows the following sequence of messages:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
For more information about this example, open the Circuit Breaker - Red Hat Fuse page at http://localhost:8080/ (while the
greetings-service
is running). This page includes a link to the Hystrix dashboard that monitors the state of the circuit breaker.