gpt4 book ai didi

c# - MassTransit - 消费者抛出异常/发布者超时等待响应

转载 作者:太空宇宙 更新时间:2023-11-03 10:59:37 27 4
gpt4 key购买 nike

我正在使用 MassTransit 并在我的应用程序中包含以下代码:

RequestMsg request = buildMeARequest();               
SomeTypeOfResponse response = null;

_serviceBus.PublishRequest(request, c =>
{
c.Handle<SomeTypeOfResponse>(message => response = message);
c.SetTimeout(TimeSpan.FromSeconds(30));
});

return response;

在消费者方面,我有这样的东西:

public class RequestMsgConsumer : Consumes<T>.All
{
public RequestMsgConsumer(IServiceBus serviceBus)
{

_serviceBus = serviceBus;
}

public void Consume(RequestMsg request)
{
SomeTypeOfResponse response = doWorkToGetResponse(request);

_serviceBus.Context().Publish(response);
}
}

当一切顺利时这很有效......但是如果 doWorkToGetResponse(request)抛出异常(或真正的 Consume() 方法的任何部分)原始请求者超时,没有失败的迹象。

我最初的想法是建立一个类 Either<Exception, SomeTypeOfResponse>这样请求者总是期望这个 Either<>构造,但这将迫使我总是尝试/捕获每个使用方法 - 而且有很多。

有没有其他人更优雅地解决了这个问题?

最佳答案

我相信您想要的是将 c.HandleFault(fault => ...) 添加到您的 PublishRequest

如果这不起作用,在过去一两周的邮件列表中有几条消息是关于下一个版本中将如何修复的。我认为失败仅限于传纪,但我可能是错的。

关于c# - MassTransit - 消费者抛出异常/发布者超时等待响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18196622/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com