Издательство MassTransit не исключение - PullRequest
0 голосов
/ 19 февраля 2020

У меня есть MassTransit Producer / Publisher, разработанный в Asp. Net Web API.

Производитель просто отправляет сообщение в Exchange -> Очередь.

public async Task<bool> AddToQueue(int msgId, Message message)
{
     var endpoint = await _bus.GetSendEndpoint(new Uri("exchange:testExchange?bind=true&queue=MessageQueue"));
     await endpoint.Send(new Message()
     {
         Id = msgId,
         Text = message.Text
     });
     return true;
}

Однако приведенное выше не вернет никакого исключения (даже если бы у меня была какая-то обработка), если, например, очередь не найдена или возникла проблема с привязкой et c. Сообщение будет просто потеряно без признаков того, что оно создаст очередь ошибок?

Я понимаю, что она создаст очередь, если она не была найдена, но я уверен, что если возникла проблема между брокером и производителем сообщений, как бы Вы справляетесь с этим?

1 Ответ

0 голосов
/ 19 февраля 2020

Чтобы получить исключение из операции задачи, вам нужно присвоить результат выполнения вашего метода переменной Task, например:

Task<bool> myTask = AddToQueue(42, "Some message");

И чем вы можете получить свое исключение из свойства Exception задачи:

if (myTask.Exception != null) 
    Console.WriteLine(myTask.Exception.InnerException.Message);
...