我使用 ZeroMQ 工作了一段时间。我已经阅读了一些白皮书和指南中的很多内容,但我仍然有一个问题悬而未决:
假设我们使用 PUB-SUB。 消息队列在哪里或在哪个系统上?在发布者系统端、订阅者系统端还是介于两者之间?
抱歉这个可能很愚蠢的问题。 此图片来自 Broker vs. Brokerless 白皮书。
最佳答案
每个 zeromq 套接字都有发送和接收队列(限制是通过高水位线设置的)。
在无代理 PUB/SUB 的情况下,消息可以在发送方或接收方排队。
例子:
- 如果网络拥塞,发送方可能会在其发送队列中排队
- 如果接收者消费消息的速度比消息到达的速度慢,它们将在接收者 recv 队列中排队
如果队列达到高水位线,消息将丢失。
关于message-queue - ZeroMQ 消息队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58091803/