rabbitmq内存节点里面的消息可以持久化吗?

发布于 2022-09-12 00:43:25 字数 294 浏览 17 评论 0

先跟各位大佬问个好。
最近在研究rabbitmq的集群。rabbitmq集群中有磁盘节点和内存节点,其中的区别就是内存节点的元数据都放在内存中,磁盘节点的元数据放在磁盘中。

有几个问题不理解,请大佬们指导一下。
1.内存节点是从磁盘节点拉取的元数据。那么磁盘节点里面的队列和交换器元数据,必须是持久化的吗?(即创建队列和交换器时,必须声明为持久化的吗??)
2.内存节点的消息是存储在哪里的,是不是只能存储在内存中?这些消息能持久化吗

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

你又不是我 2022-09-19 00:43:25

自己答一波~
搭建了一个磁盘节点,一个内存节点的集群。
1.在磁盘节点声明了非持久化的队列和交换器,重启之后队列和交换器消失了。正常来说,持久化是生产环境必须做的操作,而不是磁盘节点默认实现的功能。
2.在内存节点声明队列并发布消息之后,然后重启内存节点,重启之后队列的内容仍然存在。


1.磁盘节点可以声明持久化或者是非持久化,但是生产环境正常要持久化的。
2.内存节点的消息是可以持久化的。

顺便加深了理解: 内存节点,除了磁盘节点的地址外,其他元数据都放在内存中。重启之后会从磁盘节点下载元数据。注意是元数据。

烟酉 2022-09-19 00:43:25

关于第二条,我觉得不应该这么说。内存节点应该是没有持久化的,持久化设置是一个队列行为。

内存节点必须存在集群结构中,在磁盘和内存节点组成集群时,通过客户端向集群发送消息,不管指定的是哪个节点地址,只要队列消息是持久化的,都会先将消息持久化到 磁盘节点,然后给 客户端回送接收成功确认。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文