当前位置: 首页 > 知识库问答 >
问题:

如何暴露Spring执行器端口上的Hystrix流?

仇建茗
2023-03-14
@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);
                });
            }
        };
    }
}

此外,我还使用Hystrix进行断路。

我的问题是如何使Hystrix流暴露在执行器端口上?

目前,我仅通过以下代码在标准端口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,它在执行器端口上提供流。

共有1个答案

宋伯寅
2023-03-14

实际上,我做了@m-deinum提议的事情,而且起作用了。我用的是Spring Cloud Stack。

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

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);
    }
    // ...
}
 类似资料:
  • EXPOSE 声明端口 格式为 EXPOSE <端口1> [<端口2>...]。 EXPOSE 指令是声明运行时容器提供服务端口,这只是一个声明,在运行时并不会因为这个声明应用就会开启这个端口的服务。在 Dockerfile 中写入这样的声明有两个好处,一个是帮助镜像使用者理解这个镜像服务的守护端口,以方便配置映射;另一个用处则是在运行时使用随机端口映射时,也就是 docker run -P 时,

  • 我试图在我的spring boot应用程序中公开/actuator/healthendpoint,但我的日志表明没有公开任何endpoint。我看过一些文档,其中指出健康endpoint是默认启用的唯一endpoint,但它为我返回404。 从应用程序启动的日志: 访问 /actuator 还显示未公开任何endpoint: 我看了其他几个类似的帖子,但是没有一个补丁对我有效。我在@RestCon

  • 我正在使用spring Boot2.0.4,并希望公开我的执行器endpoint。当向application.yml仅添加以下信息时,健康状况将被公开。 当我运行http://localhost:8080/acturet时,我会得到

  • 我已经通过dockerfile制作了一个图像,其中我通过“暴露22”行暴露了一个端口。 “sudo docker build-t mysql_服务器。” 在那之后,我发现我不需要这个端口。 如何关闭22端口? 编辑:@Adrian Mouat@seanmcl 图像是一个mysql。所以数据库中的数据都在我名为"cliff_mysql56"的容器中。如果我重建图像并运行它,我必须将我所有的数据从这个

  • 对于一些老客户,我们希望公开一些用于运行状况监视的指标。正在查看Spring启动应用程序,其中它公开了来自本地JVM的许多有用指标。如果我在服务器中单独安装冲刺 (sprint) 引导执行器应用程序,它是否可能从远程 JVM 公开所有这些信息?还有其他建议//替代路径是值得赞赏的吗?

  • 我想部署一个。Net Framework应用程序到具有web前端的ACI。该程序设置为在端口8090上启动web服务,因此我在ACI设置的“端口”部分中输入了该程序,并设置了DNS名称标签。据我所知,这应该足以使网站公开,但我得到了“网站不可用”的错误消息。 我在本地运行了容器,它运行得很好。我还向Dockerfile添加了EXPOSE命令,但这也没有帮助。这张图片是基于一张照片的。Net Fra