MassTransit Publisher没有引发异常

时间:2020-02-19 14:57:16

标签: c# rabbitmq masstransit

我有一个使用Asp.Net Web API开发的MassTransit生产者/发布者。

生产者只需将消息发送到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;
}

但是,如果例如找不到队列或绑定存在问题,则上述内容不会返回任何异常(即使我已经进行了某种处理)。消息只会丢失而没有任何迹象创建一个错误队列?

我知道,如果找不到一个队列,它将创建一个队列,但是可以确定Message Broker和生产者之间是否存在问题,您将如何处理?

1 个答案:

答案 0 :(得分:0)

要从任务操作中获取异常,您需要将方法执行的结果分配给Task变量,如下所示:

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

然后您可以从Task的Exception属性获取异常:

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