.net core 如何将c#dotnet core 3.1微服务流绑定到turbine服务器流

.net core 如何将c#dotnet core 3.1微服务流绑定到turbine服务器流,.net-core,openshift,hystrix,turbine,steeltoe,.net Core,Openshift,Hystrix,Turbine,Steeltoe,我有一个运行在openshift 3上的turbine服务器,并使用steeltoe 3.0.2断路器库部署了donet core 3.1 c#microservice。我可以通过服务流url(/hystrix/hystrix.stream)监控hystrix仪表板上的微服务流。我要做的是将microservice hystrix事件流注册到turbine服务器事件流。有人知道怎么做吗?任何参考链接都会有很大帮助 更新:项目参考和设置文件配置 myproject.csproj: <Item

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

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

myproject.csproj:

<ItemGroup>
  <PackageReference Include="Steeltoe.CircuitBreaker.Hystrix.MetricsEventsCore" Version="3.0.2" />
  <PackageReference Include="Steeltoe.CircuitBreaker.HystrixCore" Version="3.0.2" />
<ItemGroup>
我也没有修改program.cs或任何.json设置文件

最近尝试访问这些微服务资源:/hystrix/config.stream、/hystrix/request.stream和/hystrix/utilization.stream,但出现以下内部服务器错误:

连接id“0HM90GL5F64RK”,请求id“0HM90GL5F64RK:00000003”:应用程序引发了未处理的异常。 System.InvalidOperationException:尝试激活“Steeltoe.CircuitBreaker.Hystrix.Config.HYSTRIxConfiguration流”时,无法解析类型“Steeltoe.CircuitBreaker.Hystrix.MetricsEvents.Controller.HystrixConfigStreamController”的服务。 位于Microsoft.Extensions.DependencyInjection.ActivatorUtilities.GetService(IServiceProvider sp,类型类型,类型requiredBy,布尔值isDefaultParameterRequired) 在lambda_方法中(闭包、IServiceProvider、对象[]) 在Microsoft.AspNetCore.Mvc.Controllers.ControllerActivatorProvider.c__显示Class4_0.b__0(ControllerContext ControllerContext) 在Microsoft.AspNetCore.Mvc.Controllers.ControllerFactoryProvider.c_uuDisplayClass5_0.g_uCreateController | 0(ControllerContext ControllerContext) 位于Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(状态和下一步、范围和范围、对象和状态、布尔值和isCompleted) 在Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeInnerFilterAsync()中 ---来自引发异常的上一个位置的堆栈结束跟踪--- 在Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.g_|24_0(ResourceInvoker invoker、Task lastTask、State next、Scope Scope、Object State、Boolean isCompleted) 位于Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResourceExecutedContextSealed上下文) 位于Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(状态和下一步、范围和范围、对象和状态、布尔值和isCompleted) 在Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.InvokeFilterPipelineAsync()中 ---来自引发异常的上一个位置的堆栈结束跟踪--- 在Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.g|u记录| 17|u 1(ResourceInvoker invoker) 在Microsoft.AspNetCore.Builder.RouterMiddleware.Invoke(HttpContext HttpContext)中 位于Steeltoe.CircuitBreaker.Hystrix.HystrixRequestContextMiddleware.Invoke(HttpContext上下文) 位于Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpProtocol.ProcessRequests[TContext](IHTTP应用程序`1应用程序) 失败:Microsoft.AspNetCore.Server.Kestrel[13]


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

services.AddHystrixConfigStream(Configuration);
但我认为更好的选择是将
addhystrixmetricstream
多元化为
AddHystrixMonitoringStreams
,后者也注册


我个人没有花太多时间处理这段代码,所以我不知道到底发生了什么,但我已经准备好了文档,如果有bug,我们应该能够进行修复。

您能否更新这个问题,将.csproj、program.cs和startup.cs的相关片段包括在内,以便我们可以看到您正在使用哪些软件包以及如何使用这些软件包?为了确保我理解这个问题,您是说您可以使用本地hystrix仪表板(使用HTTP流),但不能使用服务绑定(通过RabbitMQ)?Hello@Tim,谢谢您的评论!。问题已更新。我真的不知道我在容器日志中发现的内部服务器错误是否与我遇到的问题有关..Hi@Tim,通过使用AddHystrixConfigStream解决了容器日志中显示的异常!我会将您的答案标记为解决方案,因为我需要使用RabbitMQ服务器将服务hystrix stream绑定到turbine服务器,就像您前面提到的,一开始我不知道,但给了我这个想法。我正在研究这个问题,但听起来不会那么容易。当然,非常感谢你的帮助!假设您获得的是RabbitMQ服务绑定,那么将包引用从
MetricsEventsCore
更改为
MetricsStreamCore
就不需要花费太多时间了,您可以查看并尝试一下。我不确定它以前是否在openshift上运行过,但我希望它“能正常工作”
app.UseHystrixRequestContext();
app.UseHystrixMetricsStream();
app.UseMvc();
services.AddHystrixConfigStream(Configuration);