微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使RabbitMQ更可靠? 是否有可能定期备份其数据消息?

我想确保在RabbitMQ不会丢失,如果它崩溃。 有可能以某种方式让RabbitMQ转储或备份磁盘上的所有队列?

我也听说,一旦它收到消息,即使它崩溃,当它的消息将可用。

那么您推荐如何使该过程更可靠?

基于Qt的UI是否足够可靠用于医疗设备?

如何让脚本一直在linux下运行?

当angular色崩溃或通过pipe理API重新启动时,Azureangular色主机实际上是否重启?

推荐的技术,用于安全地更新embedded式Linux

Windows Azure是否可以轻松抵御拒绝服务攻击?

Linux HA / cluster:Pacemaker,Heartbeat,Corosync,wackamole之间有什么区别?

unix域套接字有多可靠?

如果UDP数据包在线上,我是否保证在应用层获取它们?

如果我跑得太久,我怎么能终止自己?

在RabbitMQ中,这可以通过使用队列和消息的持久性来实现。 队列耐久性意味着它的配置将被存储在磁盘上。 当RabbitMQ在崩溃后恢复时,队列将被恢复。 这可以这样做:

channel.queue_declare(queue='myQueue',durable=True)

你所寻求的与消息持久性更密切相关。 将delivery_mode标志设置为2,发布所有消息。认值为1,这使得消息仅驻留在RAM中。 在Python中查看代码示例。 摘录如下。

channel.basic_publish(exchange='',routing_key='task_queue',body=message,properties=pika.BasicProperties( delivery_mode = 2,# make message persistent ))

请注意,启用消息耐用性会影响性能。 设置为2时,RabbitMQ代理必须执行写入消息和从磁盘读取消息的额外工作。

最好的方法是创建一个RabbitMQ集群 ,然后配置HA策略 。

当您配置HA时,邮件将被复制到其他节点。 如果一个节点崩溃,则可以访问其他节点。

您也可以备份通常包含配置和消息的Mnesia目录,但是一些消息可以留在缓存中。 要确定你应该停止rabbitmq应用程序。

我会尝试使用HA。

连续备份消息的另一种方法是使用Shovel插件

正如@Milind提到的那样,使用持久性消息是最佳实践。

编辑

您云使用Tx Transaction请阅读这里: https : //www.rabbitmq.com/blog/2011/02/10/introducing-publisher-confirms/

Tx可以解决你的问题,但是会对性能产生很大的影响。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐