StackExchange.Redis 系列 7:pub/sub 消息顺序
本系列博文是“伪”官方文档翻译,并非完全将官方文档进行翻译,而是我在查阅、测试原始文档并转换为自己东西后进行的“准”翻译。
本系列本博文基于 redis 5.0.6,系列中部分博文跟官方文档有出入,有不同见解 / 说明不当的地方,还请大家不吝拍砖。
当你使用 pub/sub 的时候,需要考虑在一个连接中,消息是顺序处理还是并行处理。StackExchange 推荐如果可以的话是并行处理。
顺序处理的好处是你不需要要担心线程安全,且处理消息的顺序和消息的发送顺序是一致的(通过队列),但问题是消息间有可能相互延时。
1 | multiplexer.GetSubscriber().SubScribe("messages", (channel, message) => { |
并发处理的好处是更快,可扩展性更高,一般消息间没有什么关联的时候用并发模式。并发的问题是因为消息是无序的,你需要自己保证并发消息不会破坏你的内部状态。
1 | var channelMessageQueue = multiplexer.GetSubscriber().SubScribe("messages"); |