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,讓驅動器口流上的實際。
爲什麼你不使用Spring雲?這已經提供了你所要求的一切?您至少可以看看該組件的自動配置以獲取靈感(這僅僅是圍繞netflix hysterix的一些配置)。 –