我们正在开发一个应用程序,该应用程序需要严格按顺序处理具有相同密钥的消息。另外,出于性能/吞吐量的原因,我们需要引入并行处理。
并行化很容易——我们可以让单个线程接收消息,计算密钥的哈希值,并使用哈希 % 的工作人员将消息分发到特定的阻塞队列,另一侧有工作人员。这保证了具有相同密钥的消息被分派给同一个工作人员,因此保证了排序 - 只要接收者按顺序获取消息。
问题是:
增加 ioThreads 和 listenerThreads(默认 = 1)是否会对性能产生影响,即我们是否应该期望看到更多消息流过,或者 I/O 是否总是限制因素?
如果我们增加它们,我们仍然保证订购吗?
Pulsar 文档不清楚...