我让rabbitMQ broker作为集群在两个节点上运行。我观察到,如果已创建队列的节点关闭,则队列在其他节点上将不可用。如果我尝试发布来自其他节点的消息,它将失败。即使我从集群中删除故障节点(使用forget cluster命令)并尝试从其他节点发布消息,行为也是相同的。
在rabbitMQ中有什么方法可以实现这一点吗?
发布于 2017-06-29 10:51:38
你正在经历的行为是rabbitmq的默认行为,这正是我假设的happen.The节点,你创建队列的节点现在成为生产者,如果这个节点关闭,那么任何可用的连接或与之相关的队列或交换都将无法工作。有两个选项可以解决此问题。
在发送之前,我们需要确保接收方队列存在。如果我们将消息发送到不存在的位置,RabbitMQ将直接丢弃该消息。让我们创建一个消息将被传递到的hello队列:
发布于 2017-06-29 10:51:46
RabbitMQ允许您导入和导出定义。定义是包含所有代理对象(队列、交换、绑定、用户、虚拟主机、权限和参数)的json文件。它们不包括队列的消息。
您可以定期导出拥有该队列的节点的定义,并将其导入集群的从节点。您必须为此任务启用管理插件。
更多信息请点击此处:https://www.rabbitmq.com/management.html#configuration
https://stackoverflow.com/questions/44822841
复制