RabbitMQ的消息支持商店是全球性的吗?

时间:2016-08-11 18:17:51

标签: rabbitmq

我正在学习RabbitMQ;它是如何工作的。

根据有关其内部的文档,消息存储保留消息内容,队列只保留消息的索引。

因此,当相同的消息路由到多个队列时,它不会复制消息内容,而是仅将其存储一次,并将引用(消息ID)保留在这些队列中的消息中。

那么如果一条消息被排入属于不同机器的多个队列,该怎么办?消息是否只存储在其中一台机器上?

问题可以改写如下:是跨群集机器支持存储全局的消息还是每台机器支持本地的消息?

谢谢,

1 个答案:

答案 0 :(得分:0)

RabbitMQ使用自定义数据库存储消息,位置通常为:

/var/lib/rabbitmq/mnesia/rabbit@hostname/queues/

  

然后,如果一条消息被排入多个队列,该怎么办呢?   属于不同的机器?

设置群集时,队列在群集中可见,但所有者始终是一个节点,因此每个操作都会重定向到队列所有者。

如果节点已关闭,则队列标记为down,您无法访问该队列。

  

是跨群集计算机或本地支持存储全局的消息   每台机器?

默认情况下,每个节点都包含其队列数据。

如果启用ha策略(https://www.rabbitmq.com/ha.html),则消息将镜像到其他节点,如果所有者下线,则更改所有权并且消息可用