【转载】关于RabbitMQ的高可用性

      RabbitMQ 集群并不保证队列的高可用性,尽管 exchange、binding 这些可以复制到集群里的任何一个节点(实际上是 metadata 的复制),但是 queue 内容不会复制。要复制队列内容到集群里的每个节点,需要创建镜像队列

如下是来自 RabbitMQ 开发组织的一个回复:

If you have set up a cluster, the only thing you need to do to create an HA queue is to pass the arguments described here:
http://www.rabbitmq.com/ha.html#genesis when declaring the queue.
How exactly to do this will the depend on the AMQP client you are using, that paragraph includes an example using the Java client.

      在创建好 cluster 后,若要创建 HA queue唯一要做的事是:在声明队列时使用上述 URL 里描述的参数。具体如何做,取决于 AMQP 客户端的不同,示例里用的是 Java 客户端。

原文地址:http://www.nsbeta.info/archives/278

时间: 2024-07-28 20:53:48

【转载】关于RabbitMQ的高可用性的相关文章

【转载】RabbitMQ 网络分区问题

RabbitMQ 集群的 网络分区容错性 并不是非常高,在网络经常发生分区时会有些问题,最明显的就是 脑裂问题 .  官方文档是这样介绍的:  RabbitMQ clusters do not tolerate network partitions well. If you are thinking of clustering across a WAN, don't. You should use federation or the shovel instead. 从中我们可以看出, 在广域网环

springboot(八):RabbitMQ详解

RabbitMQ 即一个消息队列,主要是用来实现应用程序的异步和解耦,同时也能起到消息缓冲,消息分发的作用. 消息中间件在互联网公司的使用中越来越多,刚才还看到新闻阿里将RocketMQ捐献给了apache,当然了今天的主角还是讲RabbitMQ.消息中间件最主要的作用是解耦,中间件最标准的用法是生产者生产消息传送到队列,消费者从队列中拿取消息并处理,生产者不用关心是谁来消费,消费者不用关心谁在生产消息,从而达到解耦的目的.在分布式的系统中,消息队列也会被用在很多其它的方面,比如:分布式事务的支

【转载】消息队列RabbitMQ入门介绍

(一)基本概念       RabbitMQ 是流行的开源消息队列系统,用 erlang 语言开发.我曾经对这门语言挺有兴趣,学过一段时间,后来没坚持.RabbitMQ 是 AMQP(高级消息队列协议)的标准实现.如果不熟悉 AMQP,直接看 RabbitMQ 的文档会比较困难.不过它也只有几个关键概念,这里简单介绍. RabbitMQ 的结构图如下: 几个概念说明: Broker:简单来说就是消息队列服务器实体.Exchange:消息交换机,它指定消息按什么规则,路由到哪个队列.Queue:消

【转载】关于RabbitMQ的消息持久性

      在消息队列 RabbitMQ 入门介绍里,描述了 RabbitMQ 的持久性设置.在设置持久化后,消息保存在磁盘上,即使 RabbitMQ 重启或服务器重启,消息都不会丢失. RabbitMQ 支持消息的持久化,也就是数据写在磁盘上,为了数据安全考虑,我想大多数用户都会选择持久化.消息队列持久化包括3个部分:(1)exchange 持久化,在声明时指定 durable => 1(2)queue 持久化,在声明时指定 durable => 1(3)消息持久化,在投递时指定 deliv

【转载】关于RabbitMQ的消息确认

      RabbitMQ 将消息投递到客户端后,客户端如果没处理完这个消息就死掉了,这个消息还会不会存在?这取决于 RabbitMQ 的消息确认机制(Message acknowledgment)是否打开.       为了确保消息不会丢失,RabbitMQ 支持消息确认机制.(在开启了消息确认机制后)客户端需要在收到消息并处理完后,发送一个 ack 消息给 RabbitMQ,告诉它该消息可以被安全删除了.假如客户端在发送 ack 之前意外死掉了,那么 RabbitMQ 会将消息投递到下一个

转载RabbitMQ入门(2)--工作队列

工作队列 (使用Java客户端) 在这第一指南部分,我们写了通过同一命名的队列发送和接受消息.在这一部分,我们将会创建一个工作队列,在多个工作者之间使用分布式时间任务. 工作队列(亦称:任务队列)背后主要的思想是避免立即处理一个资源密集型任务并且不得不一直等待完成.相反我们可以计划着让任务后续执行.我们将任务封装 成消息,发送到队列中.一个工作者进程在后台运行,获取任务并最终执行任务.当你运行多个工作者,所有的任务将会被他们所共享. 在web应用程序中,这个理念是特别有用的,你无法在一个短暂的h

转载RabbitMQ入门(3)--发布和订阅

发布和订阅 (使用java 客户端) 在先前的指南中,我们创建了一个工作队列.这工作队列后面的假想是每一个任务都被准确的传递给工作者.在这部分我们将会做一些完全不同的事情–我们将一个消息传递给多个消费者.这部分被认知为"发布和订阅". 为了说明这个部分,我们会建立一个简单德日志系统,它是由两个程序组成–第一个发出日志消息,第二个接收和打印它们. 在我们的日志系统中,每一个运行的接收者拷贝程序将会获得信息.通过这个方式我们可以运行一个接收者,直接的把日志记录到硬盘中:在同一时间我们可以运

转载RabbitMQ入门(6)--远程调用

远程过程调用(RPC) (使用Java客户端) 在指南的第二部分,我们学习了如何使用工作队列将耗时的任务分布到多个工作者中. 但是假如我们需要调用远端计算机的函数,等待结果呢?好吧,这又是另一个故事了.这模式通常被称为远程过程调用或RPC. 在这部分,我们将会使用RabbitMQ构建一个RPC系统:一个客户端和一个可扩展的RPC服务器.由于我们还没有值得分散的耗时任务,我们将会创建一个虚拟的RPC服务,用来返回Fibonacci(斐波纳契数列). 用户接口 为了说明RPC服务如何使用,我们将会创

转载RabbitMQ入门(4)--路由

路由 (使用Java客户端) 在先前的指南中,我们建立了一个简单的日志系统.我们可以将我们的日志信息广播到多个接收者. 在这部分的指南中,我们将要往其中添加一个功能-让仅仅订阅一个消息的子集成为可能.例如,我们可以直接将关键的错误信息指向到日志文件(保存在爱硬盘空间),同时依旧能打印所有日志信息到平台上. 绑定 在之前的例子里我们已经创建绑定.你可以回顾下代码: channel.queueBind(queueName, EXCHANGE_NAME, ""); A binding is