【发布时间】:2014-08-19 20:07:12
【问题描述】:
有什么方法可以保证订阅者按照发布的顺序阅读事件?我现在正在使用环回队列,这有关系吗?
我有一个控制台模拟器,它将控制台输出行作为事件发送。我可能会等到命令结束才将所有结果作为一个单元返回,但是像“telnet”这样的交互式命令是不可能的。
问题是,有时,当结果集很长(如“dir”命令)时,某些行会出现错位。输出似乎以正确的顺序发布。
【问题讨论】:
标签: masstransit
有什么方法可以保证订阅者按照发布的顺序阅读事件?我现在正在使用环回队列,这有关系吗?
我有一个控制台模拟器,它将控制台输出行作为事件发送。我可能会等到命令结束才将所有结果作为一个单元返回,但是像“telnet”这样的交互式命令是不可能的。
问题是,有时,当结果集很长(如“dir”命令)时,某些行会出现错位。输出似乎以正确的顺序发布。
【问题讨论】:
标签: masstransit
虽然从技术上讲,环回应该是其工作方式的副产品,但如果您有多个线程读取或写入,则无法保证顺序。
另外,环回实际上仅用于测试。它并不是真正的产品就绪界面。
您可以使用 Saga 来保存消息的内容,直到您以正确的顺序接收它们。这将消除订购问题。还要考虑确保您的消费者的 ConcurrentConsumerLimit 为 1,因此只有一个线程从队列中读取。
【讨论】: