我有一个使用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和生产者之间是否存在问题,您将如何处理?
答案 0 :(得分:0)
要从任务操作中获取异常,您需要将方法执行的结果分配给Task变量,如下所示:
Task<bool> myTask = AddToQueue(42, "Some message");
然后您可以从Task的Exception属性获取异常:
if (myTask.Exception != null)
Console.WriteLine(myTask.Exception.InnerException.Message);