Создайте промежуточное программное обеспечение для добавления метаданных ко всем исходящим сообщениям DAPR.C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Создайте промежуточное программное обеспечение для добавления метаданных ко всем исходящим сообщениям DAPR.

Сообщение Anonymous »

Я хотел бы добавить идентификатор корреляции в качестве метаданных ко всем исходящим сообщениям DAPR на C#. Я создал промежуточное программное обеспечение, из которого каждый раз получаю CorrelationId, а затем назначаю его всем исходящим Http-запросам, однако я не могу установить корреляционныйId для всех исходящих сообщений DAPR. Кто-нибудь может помочь?
Это метод вызова моего промежуточного программного обеспечения CorrelationId

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

public async Task InvokeAsync(HttpContext context, ICorrelationIdGenerator correlationIdGenerator)
{
var correlationId = correlationIdGenerator.Get() == null
? Guid.NewGuid.ToString()
: correlationIdGenerator.Get();
correlationIdGenerator.Set(correlationId);
if (!context.Request.Headers.ContainsKey(Http.Headers.CORRELATION_ID))
{
context.Request.Headers.Add(Http.Headers.CORRELATION_ID, correlationId);
}

context.Response.OnStarting(() =>
{
if (!context.Response.Headers.ContainsKey(Http.Headers.CORRELATION_ID))
{
context.Response.Headers.Add(Http.Headers.CORRELATION_ID, correlationId);
}
return Task.CompletedTask;
});
await next(context);
}
а вот так всё прописано:

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

Services.AddScoped();
Services.AddDaprClient();
DaprClient регистрируется как Singleton, когда я смотрю на реализацию.
На данный момент я вызываю корреляциюIdGenerator каждый раз, когда вызываю PublishEventAsync Dapr, вот так:

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

private readonly DaprClient _client;
private readonly ICorrelationIdGenerator _cid;
public MyClass(DaprClient client, ICorrelationIdGenerator cid)
{
_client = client;
_cid = cid;
}

var correlationId = _cid.Get();

var metadata = new Dictionary
{
{ Http.Headers.CORRELATION_ID, correlationId }
};

await _client.PublishEventAsync("component", "my-topic", data, metadata: metadata);
Поэтому моя цель — внедрить метаданные во все методы PublishEventAsync, чтобы мне не приходилось передавать метаданные для каждого вызова. Это возможно? Как этого добиться?
Я использую Dapr.AspNetCore v1.11.0 и Dapr.Workflow v1.11.0.

Подробнее здесь: https://stackoverflow.com/questions/781 ... r-messages
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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