Как собрать поток турбины из автономного приложения Turbine Stream - PullRequest
0 голосов
/ 29 августа 2018

Аналогично в этом посте , я создал другое приложение на основе потока турбины для сбора потока Hystrix из других приложений.

Spring Boot: 2.0.4.RELEASE, Spring Cloud: Finchley.SR1

Класс приложения:

@SpringBootApplication
@EnableDiscoveryClient
@EnableTurbineStream
public class DemoApplication {

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

}

Зависимости maven:

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-client</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-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

Файл конфигурации приложения:

server:
  port: 8989
spring:
  application:
    name: hystrix-turbine-stream

management:
  endpoints:
    web.exposure.include: '*'

Когда я исследую исходные коды @ EanbleTurbineStream , и обнаружил, что TurbineController выставляет Flux для корневого '/' endpiont.

Но когда я попытался исследовать http://localhost:8989 в панели инструментов Hystrix, обнаружил, что он не работает должным образом.

Обновление : Когда я попытался получить доступ к приложению потока турбины и получил:

curl http://localhost:8989
data:{"type":"ping"}

data:{"type":"ping"}

data:{"type":"ping"}

data:{"type":"ping"}

В консоли приложения (ведение журнала) есть некоторый журнал, показанный как:

: Registering MessageChannel turbineStreamInput

Но я не вижу сообщений, отправленных на этот канал в моем клиентском приложении .

Вот примерные коды моего приложения потока турбины

Update2 : все заработало, я использовал устаревший spring-cloud-starter-netflix-hystrix-stream (который существует в v2.0.0M2, но не существует в окончательная версия RELEASE) в моем клиентском приложении, когда я использовал комбинацию spring-cloud-starter-netflix-hystrix и spring-cloud-netflix-hystrix-stream в клиентском приложении, это сработало хорошо.

Ответы [ 2 ]

0 голосов
/ 28 мая 2019

Вы должны установить свойства в проекте клиентского приложения: spring.cloud.stream.bindings.hystrixStreamOutput.destination = springCloudHystrixStream

0 голосов
/ 06 сентября 2018

@ Hantsy Нам нужно больше подробностей о ваших ошибках здесь. У меня работает работающее приложение Spring Boot: 2.0.4.RELEASE, Spring Cloud: Finchley.SR1, которое поможет вам, если вам нужны дополнительные разъяснения.

Чтобы @EnableTurbineStream работал правильно, вам нужно добавить ниже зависимости в вашем приложении в соответствии с документацией здесь https://cloud.spring.io/spring-cloud-netflix/single/spring-cloud-netflix.html#_turbine_stream

spring-cloud-starter-netflix-turbine-stream
spring-boot-starter-webflux
spring-cloud-stream-binder-rabbit 

(любой Spring-Cloud-Stream- * подойдет, raabitmq работает для меня)

На клиенте добавьте зависимость к spring-cloud-netflix-hystrix-stream и spring-cloud-starter-stream-* на ваш выбор.

Добавьте конфигурацию rabbitmq (в моем случае) в файл application.properties / application.yml вашего клиента и приложение турбины:

spring:
  rabbitmq:
    host: localhost
    port: 5672
    username: guest
    password: guest

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...