gpt4 book ai didi

c# - 通过 RPC 与元数据进行服务结构通信

转载 作者:行者123 更新时间:2023-12-03 01:48:45 25 4
gpt4 key购买 nike

API Gateway应用程序中,我设置为请求traceId。然后通过 HTTP 将其传递给我的无状态服务。但是服务应该通过RPC调用另一个服务(使用IServiceRemotingListener)。如何将该traceId 传递给其他服务?

到目前为止我已经完成了(根据this):

public interface ICommunicationService : IService
{
Task<string> FooAsync();
}

public class Stateless1 : StatelessService, ICommunicationService
{
protected override IEnumerable<ServiceInstanceListener> CreateServiceInstanceListeners()
{
return new[] { new ServiceInstanceListener(c => this.CreateServiceRemotingListener(c)) };
}

public Task<string> FooAsync()
{
return Task.FromResult("TraceId: " + TraceId);
}
}

并尝试使用它:

ICommunicationService service = ServiceProxy.Create<ICommunicationService>(new Uri("fabric:/App/Stateless1"));

string message = await service.FooAsync();

如何将该 TraceId 传递给 RPC 的其他服务?

最佳答案

您只能使用 SF 远程处理中的方法。将该属性更改为方法 GetCorrelationId,该方法将其返回为 intTask。并添加一个方法:

Task SetCorrelationId( int id){} 

或者最好,在调用者上生成它并将其作为消息参数的一部分传递给“FooAsync”,这样更好,因为它使服务保持无状态。

关于c# - 通过 RPC 与元数据进行服务结构通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42394690/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com