Spring Boot 2.0でhystrix.streamを有効にする方法が見つからないようです。 http:// localhost:8080/hystrix.stream にアクセスしてファイルにアクセスしようとすると、404ファイルが見つかりませんというエラーが表示されます。
コントローラで呼び出されるメソッド:
@GetMapping("/")
public Mono<String> index(Model model) {
model.addAttribute("images",
imageService
.findAllImages()
.map(image -> new HashMap<String, Object>() {{
put("id", image.getId());
put("name", image.getName());
put("imageComments", commentHelper.getComments(image));
}})
);
return Mono.just("index");
}
CommentHelperコード、@ HystrixCommandが使用されていることに注意してください:
@Component
public class CommentHelper {
private final RestTemplate restTemplate;
CommentHelper(RestTemplate restTemplate) {
this.restTemplate = restTemplate;
}
@HystrixCommand(fallbackMethod = "defaultComments")
public List<Comment> getComments(Image image) {
return restTemplate.exchange(
"http://COMMENTS/comments/{imageId}",
HttpMethod.GET,
null,
new ParameterizedTypeReference<List<Comment>>() {},
image.getId()).getBody();
}
public List<Comment> defaultComments(Image image) {
return Collections.emptyList();
}
}
これらはbuild.gradleの依存関係です:
dependencies {
compile 'org.springframework.boot:spring-boot-starter-webflux'
compile 'org.synchronoss.cloud:nio-multipart-parser'
compile 'org.springframework.boot:spring-boot-starter-data-mongodb-reactive'
compile 'org.springframework.boot:spring-boot-starter-thymeleaf'
compile 'org.springframework.boot:spring-boot-starter-actuator'
compile 'org.springframework.boot:spring-boot-devtools'
compile 'org.springframework.cloud:spring-cloud-starter-stream-rabbit'
compile 'org.springframework.cloud:spring-cloud-stream-reactive'
compile 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client'
compile 'org.springframework.cloud:spring-cloud-starter-netflix-hystrix'
testCompile 'org.springframework.boot:spring-boot-starter-test'
testCompile 'io.projectreactor:reactor-test'
compile 'junit:junit:4.12'
}
http:// localhost:8080/application/features に移動すると、次のようにHystrixが有効になっていることがわかります。
{
"enabled": [
{
"type": "com.netflix.hystrix.contrib.javanica.aop.aspectj.HystrixCommandAspect",
"name": "Hystrix",
"version": "1.5.12",
"vendor": null
},
{
"type": "com.netflix.discovery.EurekaClient",
"name": "Eureka Client",
"version": "1.8.4",
"vendor": null
},
{
"type": "org.springframework.cloud.client.discovery.composite.CompositeDiscoveryClient",
"name": "DiscoveryClient",
"version": "2.0.0.M3",
"vendor": "Pivotal Software, Inc."
},
{
"type": "org.springframework.cloud.netflix.ribbon.RibbonLoadBalancerClient",
"name": "LoadBalancerClient",
"version": "2.0.0.M3",
"vendor": "Pivotal Software, Inc."
},
{
"type": "com.netflix.ribbon.Ribbon",
"name": "Ribbon",
"version": "2.2.2",
"vendor": null
}
],
"disabled": []
}
ここで何が間違っているのですか?それが役に立った場合、私はここにあるコードをフォローしようとしています
https://github.com/learning-spring-boot/learning-spring-boot-2nd-edition-code/tree/master/7/part2
私は、本「Learning Spring Boot 2nd Edition」を読み進めています。
@EnableCircuitBreaker
または@EnableHystrix
アノテーションと@EnableHystrixDashboard
。management.endpoints.web.exposure.include=*
はapplication.propertiesにあります。この問題 に従って、application.propertiesにmanagement.endpoints.web.exposure.include=*
を含める必要があります
Application.propertiesにmanagement.endpoints.web.base-path=/
を追加する必要があります。たとえば、 これをチェックアウト です。
パスは空である必要があるため、/actuator/hystrix.stream
として正しく登録されます。