我只是想知道,发布和使用消息的最佳方式是什么,而忽略了持久性,持久性和类似的东西,而是从集群中的网络角度来看?
如果我们通过打开到服务器1(s1)的连接发布消息,但是队列master-locator-node
在服务器2(s2)上,则服务器必须将该消息从s1移至s2,对吗? / p>
始终从连接到我们的服务器的“本地”队列中消费将是最佳选择,这意味着我们从连接中消费的所有队列都位于该服务器上,不是吗?
这太复杂了吗?还是最好总是在队列所在的服务器上发布和使用它?我每天都在处理3B消息附近的某处,因此我试图尽可能减少延迟和负载。
答案 0 :(得分:1)
您忽略了正确指导的重要因素,例如持久性和消息大小。根据消息大小,持久性和工作负载,您可能会遇到三个潜在的资源瓶颈:1)CPU 2)网络3)存储。此外,取决于每个队列上的客户端数量,竞争瓶颈的可能性也很大。
答案 1 :(得分:1)
是的,始终向队列主节点发布并从队列主节点使用是最佳选择。您对连接到非主节点时发生的情况的理解是正确的。当然,这意味着您将必须使您的应用程序知道此信息(来自HTTP API)。
如果您不担心消息丢失,则在这种情况下几乎不需要群集。
注意: RabbitMQ团队监视the rabbitmq-users
mailing list,并且有时仅在StackOverflow上回答问题。