@doc
前言为了能让RabbitMQ 更好的在wan下面工作,Rabbit推出了federation插件。主要用于在wan情况下,多个rabbit实例(集群)进行数据传输和交换。
步骤1,首先搭建多个RabbitMQ消费集群
2,搭建集群完后,为了能在federation中,各集群能更加友好的显示,建议修改下集群的名字。
rabbitmqctl set_cluster_name internal//名字
3,启用各集群的federation插件(集群中各个节点都需要运行一下命令)
rabbitmq-plugins enable rabbitmq_federation
rabbitmq-plugins enable rabbitmq_federation_management
4,启用插件后,需要定义federation upstream,federation upstream就是用来定义数据来源的上游,假如实例A需要同步实例B的数据,那么实例B就是A的upstream,需要在A实例上执行一下命令
rabbitmqctl set_parameter -p /oneplus federation-upstream federation-test '{"uri":["amqp://oneplus_admin:oneplus123ABC@172.21.107.206","amqp://oneplus_admin:oneplus123ABC@172.21.107.128","amqp://oneplus_admin:oneplus123ABC@172.21.107.50"],"max-hops":1,"prefetch-count":1,"ack-mode":"on-confirm"}'
5,创建policy,进入Rabbit mq 管理后台,通过管理界面创建policy。
原理在广域网中,如果因为网络的延迟导致消息发送消息接收确认的时候导致阻塞,降低性能,消费也是同样的道理,解决异地的问题,生产者和消费者可以异地部署而感受不到过多的差异。
一条Federation link是单向的 。
broker1->broker3的单向Federation link建立过程:
1、在broker1上创建同名(可配置,默认同名)交换器exchangeA
2、在broker1上建立内部交换器exchangeA->broker3 B,通过路由键rkA与第一步的exchangeA绑定;#broker3是集群名称
3、在broker1上建立队列federation:exchangeA->broker3 B,并与上步的交换器绑定
4、通过AMQP将broker1上的队列中的消息消费到borcker3中的exchangeA中
经federation lin转发的消息会带有特殊的headers属性标记
联邦队列可以在多个Broker节点之间为单个队列提供均衡负载的功能。一个联邦队列可以连接一个或多个上游队列upstream queue。
1,增加Federation Upstream
2,增加polices
3,利用routeringkey发送消息
4,各个地区同步消息
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)