1.3. 부스터 프로젝트 빌드
이 지침에서는 Spring Boot에서 Fuse on Spring Boot를 사용하여 회로 차단기를 빌드하는 방법을 안내합니다.
사전 요구 사항
- Red Hat 개발자 포털 을 통해 booster 프로젝트를 생성하고 다운로드해야 합니다.
- 지원되는 JDK(Java Developer Kit) 버전이 있어야 합니다. 자세한 내용은 지원되는 구성 페이지를 참조하십시오.
- Apache Maven 3.3.x 이상이 있어야 합니다.
절차
쉘 프롬프트를 열고 Maven을 사용하여 명령줄에서 프로젝트를 빌드합니다.
cd fuse-circuit-breaker
mvn clean package
Maven이 프로젝트를 빌드하면 Build Success (빌드 성공) 메시지가 표시됩니다.
다음과 같이 새 쉘 프롬프트를 열고 name 서비스를 시작합니다.
cd name-service
mvn spring-boot:run -DskipTests -Dserver.port=8081
Spring Boot가 시작되면 다음과 유사한 출력이 표시됩니다.
... 2019-05-06 20:19:59.401 INFO 9553 --- [ main] o.a.camel.spring.SpringCamelContext : Route: route1 started and consuming from: servlet:/name?httpMethodRestrict=GET 2019-05-06 20:19:59.402 INFO 9553 --- [ main] o.a.camel.spring.SpringCamelContext : Total 1 routes, of which 1 are started 2019-05-06 20:19:59.403 INFO 9553 --- [ main] o.a.camel.spring.SpringCamelContext : Apache Camel 2.21.0.fuse-730078-redhat-00001 (CamelContext: camel-1) started in 0.287 seconds 2019-05-06 20:19:59.406 INFO 9553 --- [ main] o.a.c.c.s.CamelHttpTransportServlet : Initialized CamelHttpTransportServlet[name=CamelServlet, contextPath=] 2019-05-06 20:19:59.473 INFO 9553 --- [ main] b.c.e.u.UndertowEmbeddedServletContainer : Undertow started on port(s) 8081 (http) 2019-05-06 20:19:59.479 INFO 9553 --- [ main] com.redhat.fuse.boosters.cb.Application : Started Application in 5.485 seconds (JVM running for 9.841)
다음과 같이 새 쉘 프롬프트를 열고 인사말 서비스를 시작합니다.
cd greetings-service
mvn spring-boot:run -DskipTests
Spring Boot가 시작되면 다음과 유사한 출력이 표시됩니다.
... 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)
인사말 서비스는
http://localhost:8080/camel/greetings
URL에 REST 끝점을 노출합니다.웹 브라우저에서 URL을 열거나 다른 쉘 프롬프트를 열고 다음
curl
명령을 입력하여 REST 끝점을 호출합니다.curl http://localhost:8080/camel/greetings
응답은 다음과 같습니다.
{"greetings":"Hello, Jacopo"}
Camel Hystrix에서 제공하는 회로 차단기 기능을 설명하기 위해 이름 서비스가 실행 중인 쉘 프롬프트 창에서 Ctrl-C 를 입력하여 백엔드 이름 서비스를 종료합니다.
이제 이름 서비스를 사용할 수 없으므로 회로 차단기가 시작되어 인사말 서비스가 호출될 때 중단되지 않도록 합니다.
웹 브라우저에서
http://localhost:8080/camel/greetings
를 열거나 다른 쉘 프롬프트 창에 다음curl
명령을 입력하여 인사말 REST 끝점을 호출합니다.curl http://localhost:8080/camel/greetings
응답은 다음과 같습니다.
{"greetings":"Hello, default fallback"}
인사말 서비스가 실행 중인 창에서 로그에 다음과 같은 메시지 시퀀스가 표시됩니다.
2019-05-06 20:24:16.952 INFO 9729 --- [-CamelHystrix-2] route2 : Try to call name Service 2019-05-06 20:24:16.956 INFO 9729 --- [-CamelHystrix-2] o.a.c.httpclient.HttpMethodDirector : I/O exception (java.net.ConnectException) caught when processing request: Connection refused (Connection refused) 2019-05-06 20:24:16.956 INFO 9729 --- [-CamelHystrix-2] o.a.c.httpclient.HttpMethodDirector : Retrying request 2019-05-06 20:24:16.957 INFO 9729 --- [-CamelHystrix-2] o.a.c.httpclient.HttpMethodDirector : I/O exception (java.net.ConnectException) caught when processing request: Connection refused (Connection refused) 2019-05-06 20:24:16.957 INFO 9729 --- [-CamelHystrix-2] o.a.c.httpclient.HttpMethodDirector : Retrying request 2019-05-06 20:24:16.957 INFO 9729 --- [-CamelHystrix-2] o.a.c.httpclient.HttpMethodDirector : I/O exception (java.net.ConnectException) caught when processing request: Connection refused (Connection refused) 2019-05-06 20:24:16.957 INFO 9729 --- [-CamelHystrix-2] o.a.c.httpclient.HttpMethodDirector : Retrying request 2019-05-06 20:24:16.964 INFO 9729 --- [-CamelHystrix-2] route2 : We are falling back!!!!
-
이 예제에 대한 자세한 내용은 http://localhost:8080/ 에서 Circuit Breaker - Red Hat Fuse 페이지를 엽니다.
이 페이지에는 회로 차단기의 상태를 모니터링하는 Hystrix 대시보드에 대한 링크가 포함되어 있습니다.