【问题标题】:MassTransit - Running code when messages sent to error queueMassTransit - 当消息发送到错误队列时运行代码
【发布时间】:2015-09-09 23:41:47
【问题描述】:

在 MassTransit 中,如何在重试策略停止重试后通知用户发生错误?当消息被发送到错误队列时,我可以运行自定义代码吗,也许是某种中间件?我正在使用带有 RabbitMQ 的 MassTransit 3.0.11 测试版。

【问题讨论】:

    标签: masstransit


    【解决方案1】:

    您是否正在进行请求/响应对话,其中客户端正在发送请求并且服务失败并将请求移动到错误队列?

    如果是这样,您可以作为请求/响应的一部分来处理故障(发生异常时将其发送回请求者)。看看:

    https://github.com/MassTransit/Sample-RequestResponse

    如果服务出错,请求客户端会自动包装它并抛出异常。

    如果您正在做不同的事情,请包含一个代码 sn-p。

    【讨论】:

    • 我没有使用请求/响应对话。我只是有一个我正在发布和消费的事件。我正在做的一个例子是on github。在我的情况下,请求/响应对话实际上可能是正确的,但我也对 pub/sub 情况感兴趣。
    • 我在示例中试图展示的是一个发布者和订阅者,订阅者可能会遇到暂时性错误。订阅者正在使用重试策略(出于演示目的,它不会非常努力地尝试),如果它无法执行其工作,最终会放弃。如果发生这种情况,我想采取某种行动来通知外界这个故障——可能会向系统管理员发送电子邮件,可能会发布一条消息以表明发生了故障——但总的来说,我认为它会当消息进入错误队列时,能够有一个运行的钩子很有用。
    • 在 MT3 中,您可以附加一个在消息出错时调用的消费观察者。当然,这是每次尝试,而不是移动。仅在消息移动时发布的故障。您可以根据自己的目的在单独的队列中订阅和使用它。
    • 感谢您的帮助。我在观察者方面遇到了一些问题,但我会发布一个单独的问题来解决这个问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-22
    相关资源
    最近更新 更多