发布/订阅 消息顺序
当使用 发布/订阅 API 时,需要决定使用同一连接的消息应该是顺序处理 还是并行处理 。
顺序处理意味着你(很大程度上)不需要担心线程安全问题,并且这意味着你保持了事件的顺序。它们会完全按照(通过队列)接受的顺序来处理,但是结果这也意味着消息会延迟彼此。
另一种选择是 concurrent(并行) 处理。这使得工作的处理顺序 没有特定的保证 并且你的代码完全负责确保并发的消息不应该破坏内部的状态——但这样可以显著的更快,更加可以扩展。
如果消息间一般都不相关,这种处理方式特别好。
出于安全考虑, 默认处理方式是顺序处理。但是,强烈建议你尽可能的使用并行处理。这是一个简单的修改:
multiplexer.PreserveAsyncOrder = false;
这不是一个配置 选项,因为这样做是否合适 完全 取决于订阅消息的代码。