Rabbitmq vhost损坏时保持队列和交换

Rabbitmq vhost损坏时保持队列和交换,rabbitmq,vhosts,Rabbitmq,Vhosts,我们最近在使用RabbitMQ时遇到了一个问题:当服务器的硬盘驱动器已满时,RabbitMQ的vhost会损坏,无法使用 再次使用RabbitMQ函数的唯一方法是删除并重新创建损坏的主机 这样一来,我们所有的队列和交换以及其中的数据都消失了 虽然这种情况不应该发生在prod中,但我们正在寻找一种防止数据丢失的方法,如果确实发生这种事件的话 我们一直在查看官方rabbitMQ文档以及堆栈交换,但还没有找到任何解决方案来防止主机损坏时数据丢失 我们计划在开发的后期建立一个集群,它至少有助于减少vho

我们最近在使用RabbitMQ时遇到了一个问题:当服务器的硬盘驱动器已满时,RabbitMQ的vhost会损坏,无法使用

再次使用RabbitMQ函数的唯一方法是删除并重新创建损坏的主机

这样一来,我们所有的队列和交换以及其中的数据都消失了

虽然这种情况不应该发生在prod中,但我们正在寻找一种防止数据丢失的方法,如果确实发生这种事件的话

我们一直在查看官方rabbitMQ文档以及堆栈交换,但还没有找到任何解决方案来防止主机损坏时数据丢失

我们计划在开发的后期建立一个集群,它至少有助于减少vhost损坏时的数据丢失,但目前还不可能

有没有可靠的方法来防止vhost损坏,或者在不丢失数据的情况下修复vhost?

对此的一些想法(没有特定顺序):

  • RabbitMQ具有多个功能—依赖单个节点无法防止数据丢失

  • 通常,消息可以有两种可能的保证之一,但决不能同时有两种保证:

    • 至少一次传递-消息将至少传递一次,甚至更多
    • 最多一次传递—消息可能被传递,也可能不被传递,但如果它被传递,它将永远不会被第二次传递
  • 监控节点的整体运行状况(即磁盘空间、处理器使用、内存等)应通过特定于此目的的工具主动完成。您永远不应该因为关键系统资源耗尽而感到惊讶

  • 如果您运行的是一个节点,而该节点的磁盘空间不足,并且有一堆消息在上面,您担心数据丢失,不知道RabbitMQ能为您提供什么帮助,我会说您的优先级混淆了

  • RabbitMQ不是数据库。它的设计目的不是在不确定的时间段内可靠地存储消息。请不要指望它是这样的