【问题标题】:MassTransit: Event orderMassTransit:事件顺序
【发布时间】:2014-08-19 20:07:12
【问题描述】:

有什么方法可以保证订阅者按照发布的顺序阅读事件?我现在正在使用环回队列,这有关系吗?

我有一个控制台模拟器,它将控制台输出行作为事件发送。我可能会等到命令结束才将所有结果作为一个单元返回,但是像“telnet”这样的交互式命令是不可能的。

问题是,有时,当结果集很长(如“dir”命令)时,某些行会出现错位。输出似乎以正确的顺序发布。

【问题讨论】:

    标签: masstransit


    【解决方案1】:

    虽然从技术上讲,环回应该是其工作方式的副产品,但如果您有多个线程读取或写入,则无法保证顺序。

    另外,环回实际上仅用于测试。它并不是真正的产品就绪界面。

    您可以使用 Saga 来保存消息的内容,直到您以正确的顺序接收它们。这将消除订购问题。还要考虑确保您的消费者的 ConcurrentConsumerLimit 为 1,因此只有一个线程从队列中读取。

    【讨论】:

    • 我明白了。就是这样,队列用于许多“终端”,所以如果有很多就可以了。我无法保留这些消息,它们需要在它们发生时立即被解雇,因此终端可以快速获得反馈。我将看看为什么同一终端中的消息顺序错误,这可能是我做错了什么。谢谢!
    • 也许每个终端都应该有自己的临时队列?例如:stackoverflow.com/questions/18179296/…
    • 好吧,目前我只使用一个终端,所以不会有什么不同:)
    猜你喜欢
    • 2018-12-12
    • 2014-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-24
    • 1970-01-01
    相关资源
    最近更新 更多