1

我有一个在 openshift 3 上运行的涡轮服务器,并使用 steeltoe 3.0.2 断路器库部署了一个 donet core 3.1 c# 微服务。我可以通过服务流 url (/hystrix/hystrix.stream) 监控 hystrix 仪表板上的微服务流。我要做的是将微服务 hystrix 事件流注册到涡轮服务器事件流中。有谁知道如何做到这一点?任何参考链接也会有很大帮助。

更新:项目参考和设置文件配置

我的项目.csproj:

<ItemGroup>
  <PackageReference Include="Steeltoe.CircuitBreaker.Hystrix.MetricsEventsCore" Version="3.0.2" />
  <PackageReference Include="Steeltoe.CircuitBreaker.HystrixCore" Version="3.0.2" />
<ItemGroup>

startup.cs:配置服务部分

services.AddMvc(options => options.EnableEndpointRouting = false);
services.AddHystrixCommand<MyCircuitBreakerCommand>("MyCircuitBreakerGroup", Configuration);
services.AddHystrixMetricsStream(Configuration);

startup.cs -> 配置部分

app.UseHystrixRequestContext();
app.UseHystrixMetricsStream();
app.UseMvc();

我也没有修改 program.cs 或任何 .json 设置文件。

最近尝试访问这些微服务资源:/hystrix/config.stream、/hystrix/request.stream 和/hystrix/utilization.stream,但是得到这个内部服务器错误:

连接 ID“0HM90GL5F64RK”,请求 ID“0HM90GL5F64RK:00000003”:应用程序引发了未处理的异常。System.InvalidOperationException:尝试激活“Steeltoe.CircuitBreaker.Hystrix.MetricsEvents.Controllers.HystrixConfigStreamController”时无法解析“Steeltoe.CircuitBreaker.Hystrix.Config.HystrixConfigurationStream”类型的服务。在 Microsoft.AspNetCore.Mvc.Controllers.ControllerActivatorProvider.<>c__DisplayClass4_0.b__0 的 Microsoft.Extensions.DependencyInjection.ActivatorUtilities.GetService(IServiceProvider sp, Type type, Type requiredBy, Boolean isDefaultParameterRequired) (ControllerContext controllerContext) 在 Microsoft.AspNetCore.Mvc.Controllers.ControllerFactoryProvider.<>

4

1 回答 1

1

此错误消息告诉我们HystrixConfigurationStream尚未向服务容器注册。可以在 startup.cs 中使用此代码添加:

services.AddHystrixConfigStream(Configuration);

但我认为更好的选择是复数AddHystrixMetricsStreamto AddHystrixMonitoringStreams,它还记录了其他一些东西

我个人并没有花很多时间处理这段代码,所以我不知道到底发生了什么,但我已经为文档提交了一个问题,如果有错误,我们应该能够跟进修复.

于 2021-05-27T14:42:43.967 回答