Как начать/продолжить действие через границы в .NET 8C#

Место общения программистов C#
Ответить
Anonymous
 Как начать/продолжить действие через границы в .NET 8

Сообщение Anonymous »

У меня есть микросервисы, на которых выполняется множество рабочих нагрузок, и я пытаюсь отследить «маршрут» данной рабочей нагрузки. Я использую .NET Aspire, и у меня добавлены 3 фоновых рабочих проекта и проект веб-API.
Первый фоновый рабочий процесс запускает действие при поступлении рабочей нагрузки. Когда это будет сделано, он помещает его в очередь RabbitMQ. Я беру идентификатор текущего действия и помещаю его в заголовки сообщения. Рабочий 2 использует тот же метод, когда отправляет сообщение рабочему 3.

Код: Выделить всё

basicProperties.Headers = new Dictionary();

if (Activity.Current?.Id !=  null)
{
basicProperties.Headers.Add(DiagnosticsHandlerLoggingStrings.TraceParentHeaderName, Activity.Current?.Id);
}
В работниках 2 и 3 я запускаю действие следующим образом:

Код: Выделить всё

if (basicProperties.Headers?.TryGetValue(DiagnosticsHandlerLoggingStrings.TraceParentHeaderName, out var parentActivityIdRaw) == true &&
parentActivityIdRaw is Byte[] traceParentBytes) {
parentActivityId = Encoding.UTF8.GetString(traceParentBytes);
}

return activitySource.StartActivity("Incoming message from queue", kind: ActivityKind.Consumer, parentId: parentActivityId);
Используя HttpClient, третий и последний рабочий процесс вызывает веб-API.
На странице трассировки в Aspire показаны рабочий 1, рабочий 3 и веб-API. Не рабочий 2. Более того, ни одно из событий, которые я добавляю в рабочий 3, не отображается в подробном представлении, только события из HttpClient.
Изображение

Как правильно продолжать деятельность, преодолевая границы? Кажется, что HttpClient, а также IHttpActivityFeature могут справиться с этим и фактически продолжают действие, но когда я использую Activity.Current в своем собственном коде, ничего не помещается в события активность, по крайней мере, она не отображается в деталях трассировки.
Глядя на трассировку, кажется, что я правильно настраиваю активность, но почему-то не могу добавлять в нее события сам, хотя HttpClient может.

Подробнее здесь: https://stackoverflow.com/questions/792 ... s-in-net-8
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»