gpt4 book ai didi

spring - 如何在 Spring Actuator 端口上公开 Hystrix Stream?

转载 作者:行者123 更新时间:2023-12-04 03:21:17 25 4
gpt4 key购买 nike

我在 Spring Boot 应用程序中使用 Jetty 嵌入式服务器。

为了处理请求,我提供了这样的自定义处理程序。

@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 暴露在 actuator 端口上?

目前我只能通过以下代码在标准端口 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 Cloud,其中 @EnableHystrix 实际上在执行器端口上提供了流。

最佳答案

实际上,我按照@m-deinum 的建议做了,并且成功了。我使用了 Spring Cloud Stack。

为了在执行器上实现 Hystrix Stream,我添加了依赖项:

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);
}
// ...
}

关于spring - 如何在 Spring Actuator 端口上公开 Hystrix Stream?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38188795/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com