У меня есть проект сервисной фабрики — есть APIGateway (фасад), на котором размещен общедоступный слой webapi. Он общается с несколькими различными микросервисами (не публикуемыми публично) через Fabric Remoting v2.
Теперь я хочу передать TraceId (в основном HttpContext.TraceIdentifier) из службы APIGateway в микрослужбы для целей отслеживания/регистрации. Я вижу, что объект FabricTransportServiceRemotingClientFactory (который является прокси-сервером svc на стороне клиента) принимает TraceId, и это здорово. Однако как мне получить доступ к этому идентификатору трассировки на стороне прослушивателя, чтобы регистратор мог выдать этот идентификатор трассировки, чтобы я мог в конечном итоге искать все журналы в нескольких службах для одного и того же запроса Http с использованием одного и того же идентификатора трассировки.
Код APIGateway (клиент)
public MyController()
{
// explicitly create V2 remoting client (as listener is V2)
var proxyFactory = new ServiceProxyFactory((c) =>
{
return new FabricTransportServiceRemotingClientFactory(
traceId: traceIdentifier // <--- from HttpContext, for logging
);
});
_svcProxy = proxyFactory.CreateServiceProxy<IMyService>(
ServiceUri,
listenerName: MyMicroservice.Models.Constants.ListenerName);
}