我想确保在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。
正如@Milind提到的那样,使用持久性消息是最佳实践。
编辑
您云使用Tx Transaction请阅读这里: https : //www.rabbitmq.com/blog/2011/02/10/introducing-publisher-confirms/
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。