Как добавить пользовательские данные в ConsumeContext?

Я пытаюсь добавить пользовательскую полезную нагрузку в ConsumeContext, как это

public Task Consume(ConsumeContext<Message1> context)
{
    context.GetOrAddPayload(() => new Payload());
    return context.Publish(new Message2()); 
}

И ожидайте получить эту полезную нагрузку в Message2 потребителя. Но нет такой полезной нагрузки в контексте;

public Task Consume(ConsumeContext<Message2> context)
{
    Payload payload;
    context.TryGetPayload<Payload>(out payload);
}

полезная нагрузка всегда нулевая. Так могу ли я добавить свою полезную нагрузку в контекст и как это сделать правильно? Благодарю.

1 ответ

Полезные нагрузки добавлены к ConsumeContext действительны только для текущего сообщения и не являются постоянными. Они используются компонентами промежуточного программного обеспечения для сохранения данных и / или предоставления данных для нижестоящих компонентов или сервисов промежуточного программного обеспечения (таких как потребители, саги и т. Д.), Которые потребляют сообщения.

Если вам нужно сохранить данные между сообщениями, рассмотрите возможность использования саги, коррелированной с общим идентификатором, чтобы сообщения доставлялись в один и тот же экземпляр саги.

Другие вопросы по тегам