【问题标题】:Publisher confirmations not working when using MassTransit, rabbitmq-message-deduplication plugin, and RabbitMQ使用 MassTransit、rabbitmq-message-deduplication 插件和 RabbitMQ 时,发布者确认不起作用
【发布时间】:2021-06-08 23:29:32
【问题描述】:

使用 RabbitMQ 3.8.14 和 0.5.0 的插件

https://github.com/noxdafox/rabbitmq-message-deduplication

与 C# 中的 MassTransit 库一起使用。

如果我设置一个队列来使用重复数据删除,似乎只有在我关闭发布者确认后才能让它工作。

如果发布者确认设置为 true(默认和所需设置),那么当发送副本时,我会收到如下异常

MassTransit.RabbitMqTransport.MessageNotAcknowledgedException

如果我将其设置为 false,则重复项会被过滤掉,一切都会按预期工作。

如果可能,我希望重复数据删除和消息确认能够正常工作。

【问题讨论】:

  • 我从来没有用过那个插件,不知道它是如何工作的。但显然它不适用于 MassTransit。 建议禁用发布者确认,因为没有迹象表明代理已收到消息。
  • 谢谢@ChrisPatterson,是的,这也是我的观点。我可能会用 RabbitMQ .NET 客户端试试看是否得到相同的结果。

标签: rabbitmq masstransit


【解决方案1】:

插件不支持带有发布者确认的 MassTransit。

这是因为库要求确认消息已发布到队列中。由于消息是重复的,因此不会在队列中发布。插件将此事实通知代理,代理将否定确认发送回库。

由于 Broker 不支持复杂的通知语义,因此没有简单的方法来解决这个问题。也就是说,Broker 只能声明消息是否在队列中发布。它不能提供任何额外的信息。

您可以在comment 中找到对上述内容的详细说明。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-23
    • 2020-03-13
    • 2020-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多