(2.0.2.RELEASE) Turbine rabbit

Turbine 集成 rabbit bug

springcloud Finchley.RELEASE(2.0.2.RELEASE)
spring-boot 2.0.3.RELEASE
- monitor
- service


monitor

pom.xml

   <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-turbine-stream</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-stream-rabbit</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
    </dependencies>

application.yml

spring:
  application:
    name: monitor

  # rabbitmq 配置 
  rabbitmq:
    host: 127.0.0.1
    port: 5672
    username: admin
    password: admin

server:
  port: 8080

eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8081/eureka

management:
  endpoints:
    web:
      exposure:
        include: hystrix.stream

MonitorApplication

@SpringBootApplication
@EnableDiscoveryClient
@EnableHystrixDashboard
@EnableTurbineStream
public class MonitorApplication {

    public static void main(String[] args) {
        SpringApplication.run(MonitorApplication.class, args);
    }
}

service

pom.xml

  <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!-- openFeign -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>

        <!-- 监控 Hystrix Stream hystrix-amqp -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-netflix-hystrix-stream</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-stream-rabbit</artifactId>
        </dependency>

        <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
    </dependencies>

application.yml

spring:
  application:
    name: consumer
  # rabbitmq 配置 
  rabbitmq:
    host: 127.0.0.1
    port: 5672
    username: admin
    password: admin

server:
  port: 8882

eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8081/eureka/

management:
  server:
    port: 9001
  endpoints:
    web:
      exposure:
        # 公开所有监控端点 *  (这里主要是hystrix.stream 上报监控数据到监控板)
        include: "*"

feign:
  hystrix:
    enabled: true

ServiceApplication

@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
@EnableCircuitBreaker // 启动断路器,如果要监控hystrix的流必须开启此注解,即使fegin已经通过属性
public class ServiceApplication {

    public static void main(String[] args) {
        SpringApplication.run(ServiceApplication.class, args);
    }
}

下面问题来了,我这边monitor打开服务 和 client 服务 发现 MQ里队列数据是对的,

用谷歌 打开 打开http://localhost:8080/hystrix 发现 服务器报错

2018-08-08 16:31:47.759 ERROR 3016 --- [io-8080-exec-10] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] threw exception
java.io.IOException: 你的主机中的软件中止了一个已建立的连接。
    at sun.nio.ch.SocketDispatcher.write0(Native Method)
    at sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:51)
    at sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:93)
    at sun.nio.ch.IOUtil.write(IOUtil.java:65)
    at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:471)
    at org.apache.tomcat.util.net.NioChannel.write(NioChannel.java:134)
    at org.apache.tomcat.util.net.NioBlockingSelector.write(NioBlockingSelector.java:101)
    at org.apache.tomcat.util.net.NioSelectorPool.write(NioSelectorPool.java:157)
    at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.doWrite(NioEndpoint.java:1276)
    at org.apache.tomcat.util.net.SocketWrapperBase.doWrite(SocketWrapperBase.java:670)
    at org.apache.tomcat.util.net.SocketWrapperBase.flushBlocking(SocketWrapperBase.java:607)
    at org.apache.tomcat.util.net.SocketWrapperBase.flush(SocketWrapperBase.java:597)
    at org.apache.coyote.http11.Http11OutputBuffer$SocketOutputBuffer.flush(Http11OutputBuffer.java:646)
    at org.apache.coyote.http11.filters.ChunkedOutputFilter.flush(ChunkedOutputFilter.java:169)
    at org.apache.coyote.http11.Http11OutputBuffer.flush(Http11OutputBuffer.java:252)
    at org.apache.coyote.http11.Http11Processor.flush(Http11Processor.java:1564)
    at org.apache.coyote.AbstractProcessor.action(AbstractProcessor.java:352)
    at org.apache.coyote.Response.action(Response.java:173)
    at org.apache.catalina.connector.OutputBuffer.doFlush(OutputBuffer.java:317)
    at org.apache.catalina.connector.OutputBuffer.flush(OutputBuffer.java:284)
    at org.apache.catalina.connector.CoyoteOutputStream.flush(CoyoteOutputStream.java:118)
    at sun.nio.cs.StreamEncoder.implFlush(StreamEncoder.java:297)
    at sun.nio.cs.StreamEncoder.flush(StreamEncoder.java:141)
    at java.io.OutputStreamWriter.flush(OutputStreamWriter.java:229)
    at org.springframework.util.StreamUtils.copy(StreamUtils.java:121)
    at org.springframework.http.converter.StringHttpMessageConverter.writeInternal(StringHttpMessageConverter.java:103)
    at org.springframework.http.converter.StringHttpMessageConverter.writeInternal(StringHttpMessageConverter.java:43)
    at org.springframework.http.converter.AbstractHttpMessageConverter.write(AbstractHttpMessageConverter.java:224)
    at org.springframework.web.servlet.mvc.method.annotation.ResponseBodyEmitterReturnValueHandler$HttpMessageConvertingHandler.sendInternal(ResponseBodyEmitterReturnValueHandler.java:199)
    at org.springframework.web.servlet.mvc.method.annotation.ResponseBodyEmitterReturnValueHandler$HttpMessageConvertingHandler.send(ResponseBodyEmitterReturnValueHandler.java:189)
    at org.springframework.web.servlet.mvc.method.annotation.ResponseBodyEmitter.sendInternal(ResponseBodyEmitter.java:189)
    at org.springframework.web.servlet.mvc.method.annotation.ResponseBodyEmitter.send(ResponseBodyEmitter.java:183)
    at org.springframework.web.servlet.mvc.method.annotation.SseEmitter.send(SseEmitter.java:133)
    at org.springframework.web.servlet.mvc.method.annotation.SseEmitter.send(SseEmitter.java:116)
    at org.springframework.web.servlet.mvc.method.annotation.ReactiveTypeHandler$SseEmitterSubscriber.send(ReactiveTypeHandler.java:344)
    at org.springframework.web.servlet.mvc.method.annotation.ReactiveTypeHandler$AbstractEmitterSubscriber.run(ReactiveTypeHandler.java:283)
    at java.lang.Thread.run(Thread.java:748)

用 restful插件 请求结果是

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <base href="/hystrix"> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Hystrix Dashboard</title> <!-- Javascript to monitor and display --> <script src="/webjars/jquery/2.1.1/jquery.min.js" type="text/javascript"></script> <script> function sendToMonitor() { if($('#stream').val().length > 0) { var url = "/hystrix/monitor?stream=" + encodeURIComponent($('#stream').val()) + ""; if($('#delay').val().length > 0) {	url += "&delay=" + $('#delay').val(); } if($('#title').val().length > 0) {	url += "&title=" + encodeURIComponent($('#title').val()); } location.href= url; } else { $('#message').html("The 'stream' value is required."); } } </script> </head> <body> <div style="width:800px;margin:0 auto;"> <center> <img width="264" height="233" src="/hystrix/images/hystrix-logo.png"> <br> <br> <h2>Hystrix Dashboard</h2> <input id="stream" type="textfield" size="120" placeholder="http://hostname:port/turbine/turbine.stream"></input> <br><br> <i>Cluster via Turbine (default cluster):</i> http://turbine-hostname:port/turbine.stream <br> <i>Cluster via Turbine (custom cluster):</i> http://turbine-hostname:port/turbine.stream?cluster=[clusterName] <br> <i>Single Hystrix App:</i> http://hystrix-app:port/hystrix.stream <br><br> Delay: <input id="delay" type="textfield" size="10" placeholder="2000"></input>ms &nbsp;&nbsp;&nbsp;&nbsp; Title: <input id="title" type="textfield" size="60" placeholder="Example Hystrix App"></input><br> <br> <button onclick="sendToMonitor()">Monitor Stream</button> <br><br> <div id="message" style="color:red"></div> </center> </div> </body> </html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值