Я новичок в Masstransit и очень сильно застрял в одной точке.
Ниже моя архитектура.
1) У меня есть WebApi COntroller, который отправляет сообщение в azure Очередь с использованием приведенного ниже кода.
if (_dipDecisionSendersEnabled)
{
//If MassTransit Senders are enabled, send a "ApplicationUpgradeDecision" message to the Message Bus
Task<bool> downloading = SendDipDecisionMessagetoMessageBus(applicationNumber,
systemId.ToString(),
decisionId, externalApplicationReference);
done = await downloading.ConfigureAwait(false);
}
#endregion MassTransit Sender DipDecisionUpdated
try
{
if (done)
{
response = await UpdateDIPDecision(applicationNumber, systemId, decisionId, externalApplicationReference).ConfigureAwait(false);
}
}
здесь я делаю после отправки сообщения в очередь. Я звоню третьей стороне, чтобы обновить решение и получить от них ответ в ответ. Этот код выше находится в классе EventController.
2) Теперь у меня есть получатель, как показано ниже в другом файле, как DipConsumer.cs, как показано ниже
public async Task Consume(ConsumeContext<DipDecision> context)
{
await _service.ServiceTheThing(context.Message.ApplicationNumber).ConfigureAwait(true);
await context.RespondAsync<IMassTransit>(new
{
applicationNumber = $"DipDecision - Consumer Received DIP Decision for application number : {context.Message.ApplicationNumber}",
systemId = $"DipDecision - Consumer Received DIP Decision against system : {context.Message.SystemId}",
decisionId = $"DipDecision - Consumer Received DIP Decision against system : {context.Message.DecisionId}",
externalApplicationReference = $"DipDecision - Consumer Received DIP Decision from external application reference number : {context.Message.ExternalApplicationReference}"
}).ConfigureAwait(true);
}
Я хочу, чтобы мой потребитель выполнялся только тогда, когда я получить "ОК" в качестве ответа в моей переменной ответа, которая находится в EventController. Однако я не могу вставить свой ответ webapi в контекст получателя.
Пожалуйста, ознакомьтесь с некоторыми указаниями здесь.