2016-07-04 64 views
1

我在Spring Boot應用程序中使用Jetty嵌入式服務器。如何在Spring Actuator端口上暴露Hystrix流?

要處理請求,我提供了我的自定義處理程序。

@Slf4j 
@Configuration 
@EnableWebMvc 
@SpringBootApplication 
public class Main { 
    public static void main(String... args) { 
     new SpringApplicationBuilder().sources(Main.class).run(args); 
    } 

    @Bean 
    public EmbeddedServletContainerCustomizer customizer(JettyRequestHandler myCustomHandler) throws MalformedURLException { 
     return new EmbeddedServletContainerCustomizer() { 

      @Override 
      public void customize(ConfigurableEmbeddedServletContainer container) { 
       if (container instanceof JettyEmbeddedServletContainerFactory) { 
        customizeJetty((JettyEmbeddedServletContainerFactory) container); 
       } 
      } 

      private void customizeJetty(JettyEmbeddedServletContainerFactory jetty) { 
       jetty.addServerCustomizers((JettyServerCustomizer) server -> { 
        HandlerCollection handlerCollection = new HandlerCollection(); 
        handlerCollection.setHandlers(new Handler[]{myCustomHandler, server.getHandler()}); 
        server.setHandler(handlerCollection); 
       }); 
      } 
     }; 
    } 
} 

我正在收聽標準8080端口上的請求。我還包括Spring Boot Actuator到我的項目中以獲得一些生產終點(健康等)。它從另一個端口開始:8181

此外,我正在使用Hystrix作爲斷路目的。

我的問題是如何使Hystrix Stream暴露在執行器端口上?

目前我只設法與下面的代碼段將其暴露在標準端口8080上:

@Bean 
public ServletRegistrationBean hystrixStreamServlet(){ 
    return new ServletRegistrationBean(new HystrixMetricsStreamServlet(), "/hystrix.stream"); 
} 

但我想揭露它在另一個,有隻爲應用目的的默認值。

這些都是我的一些依賴條件的:

compile 'com.netflix.hystrix:hystrix-core:1.5.3' 
compile 'com.netflix.hystrix:hystrix-metrics-event-stream:1.5.3' 
compile 'org.springframework.boot:spring-boot-starter-actuator:1.3.5.RELEASE' 

我想不使用Spring雲在哪裏@EnableHystrix,讓驅動器口流上的實際。

+0

爲什麼你不使用Spring雲?這已經提供了你所要求的一切?您至少可以看看該組件的自動配置以獲取靈感(這僅僅是圍繞netflix hysterix的一些配置)。 –

回答

0

其實我做了什麼@ m-deinum建議和它的工作。我使用了Spring Cloud Stack。

爲了實現豪豬流器上我加依賴條件:

compile group: 'org.springframework.cloud', name: 'spring-cloud-starter', version: '1.1.1.RELEASE'   // spring cloud starter 
compile group: 'org.springframework.cloud', name: 'spring-cloud-starter-hystrix', version: '1.1.3.RELEASE' // spring cloud hystrix starter 
compile group: 'org.springframework.cloud', name: 'spring-cloud-starter-ribbon', version: '1.1.3.RELEASE' // spring ribbon starter 

和主類註釋:

@EnableCircuitBreaker 
@SpringBootApplication 
public class Main { 
    public static void main(String... args) { 
     new SpringApplicationBuilder().sources(Main.class).run(args); 
    } 
    // ... 
}