首页 > 其他分享 >RabbitMQ -- 集群(二)

RabbitMQ -- 集群(二)

时间:2023-11-26 10:02:12浏览次数:32  
标签:-- RabbitMQ 节点 队列 集群 rabbitmq policy node1 admin

镜像队列

队列创建只在创建的机器上出现,不会出现在其他节点上,需要创建镜像队列,将队列备份到其他节点,可以备份到其他节点或者全部节点

创建:在任意一个节点上添加一个policy即可

在Web管理界面设置:admin -> policies -> Add / update a policy ->

Name : mirror-two
Pattern: ^mirror     #备份以mirror开头的队列
Definition: ha-mode -> exactly
            ha-params -> 2
            ha-sync-mode -> automactic
HaProxy实现负载均衡 + keepalive = 高可用

HaProxy提供高可用性、负载均衡及基于TCP HTTP应用的代理,支持虚拟主机

Federation Exhcange(联合交换机)

解决网络延迟问题,北京的访问北京机房的服务器,上海的访问上海的服务器,北京和上海服务器同步数据

上游(upstream)的数据同步到下游,以交换机为节点

开启插件:(在每台机器上都要开启)

$: sudo rabbitmq-plugins enable rabbitmq_federation
$: sudo rabbitmq-plugins enable rabbitmq_federation_management

消费者在创建下游节点交换机 fed_exchange

fun main() {
    // 创建连接工厂
    val factory = ConnectionFactory()
    factory.host = "166.166.166.93"
    factory.username = "admin"
    factory.password = "123456"
    // 创建连接
    val connection = factory.newConnection()
    // 创建信道
    val channel = connection.createChannel()
    channel.exchangeDeclare("fed_exchange", BuiltinExchangeType.DIRECT)
    channel.queueDeclare("node2_queue", true, false, false, null)
    channel.queueBind("node2_queue", "fed_exchange", "routekey")
    channel.basicConsume("node2_queue", true,
        DeliverCallback { _, message -> message?.let { println(String(it.body)) } },
        CancelCallback { println("消息消费被中断") })
}

在下游节点配置上游节点

在Web管理界面设置:admin -> Federation Upstreams -> Add a new stream

Name: node1-as-upstream
URI: amqp://admin:123456@node1

添加policy

在Web管理界面设置:admin -> policies -> Add / update a policy ->

Name: exchange-policy
Pattern: ^fed_*
Apply to: Exchanges
Definition: 
    federation-upstream = node1-as-upstream
联合队列

联合队列可以在多个节点之间为单个队列提供负载均衡功能。一个联合队列可以连接多个上游队列

添加policy

在Web管理界面设置:admin -> policies -> Add / update a policy ->

Name: queue-policy
Pattern: ^fed_*
Apply to: Queues
Definition: 
    federation-upstream = node1-as-upstream
Shovel

从队列拉取数据并转发至另一个节点的交换机的队列,同步数据

安装插件

$: sudo rabbitmq-plugins enable rabbitmq_shovel
$: sudo rabbitmq-plugins enable rabbitmq_shovel_management

配置Shovel : node1节点中的Q1队列数据同步到node2节点中的Q2队列

在Web管理界面设置:admin -> Shovel Management -> Add a new shovel

Name:          Q1-to-Q2
Source:      URI: amqp://admin:123456@node1
             Queue
Destination: URI: amqp://admin:123456@node2
             Queue

标签:--,RabbitMQ,节点,队列,集群,rabbitmq,policy,node1,admin
From: https://blog.51cto.com/soldatyxd/8566116

相关文章

  • 无涯教程-Linux - 环境变量
    在本章中,我们将详细讨论Unix环境。Unix的一个重要概念是environment,它是由环境变量定义的。变量是我们为其分配值的字符串。分配的值可以是数字,文本,文件名,设备或任何其他类型的数据。如,首先我们设置一个变量TEST,然后使用echo命令访问它的值-$TEST="UnixProgramming"$ec......
  • 电脑不开机是什么原因
    1、硬盘设置错误。2、主机与显示器连接的线出现了松动。3、电脑被黑,需要恢复系统重装电脑。4、主板跳线安插错误。5、电源开关未开/电源故障。6、机箱开机按键故障。7、CPU过热。8、核心硬件故障。9、内存问题。10、BIOS设置错乱。电脑介绍电子计算机(electroniccomputer)通称电脑,是......
  • 分享一个python写的pdf拆分合并小工具
    github地址https://github.com/Biexei/pdf-tools1.安装requirements.txt中的库文件pipinstall-rrequirements.txt2.打包成exePyinstaller-F-wpdf.pyimport wximport osfrom PyPDF2 import PdfFileReader, PdfFileWriterimport timedef pdf_merge(out_put_path: ......
  • Java中MongoDB操作
    Java中对MongoDB的操作本文介绍了使用Java编程语言与MongoDB进行交互的基本操作。MongoDB是一个开源的文档数据库,它提供了高性能、可扩展性和灵活的数据存储解决方案。安装MongoDB驱动程序在开始之前,我们需要安装MongoDB的Java驱动程序。你可以通过Maven或手动下载MongoDB驱动程序......
  • FreeRTOS入门教程(任务通知)
    (文章目录)前言本篇文章将带大家学习任务通知的概念和使用方法。一、什么是任务通知FreeRTOS中的任务通知(TaskNotification)是一种轻量级的同步机制,允许一个任务通知另一个任务已发生的事件或条件。这对于多任务系统中的协作和同步非常有用。以下是有关FreeRTOS任务通知的详细......
  • 统计指定月份的总金额,用SUMPRODUCT函数快速解决!
    1职场实例小伙伴们大家好,今天我们来讲解一个关于SUMPRODUCT函数解决指定月份汇总金额的职场真实案例。如下图所示:是一张每日的产品数量单价明细表格。A列为日期,B列为数量,C列为单价,数量乘以单价即为当天的总金额,但是总金额数据在数据源中是没有体现出来的。我们想要在F2单元格汇总出......
  • day05 K8S网络组件的深度剖析 (1.10.1 -1.10.3)
    一、K8S网络组件的深度剖析上1、认识FlannelFlannel是专为kubernetes定制的三层网络解决方案,主要用于解决容器的跨主机通信问题优势:kubernetes发行版都可以默认安装Flannel容器安装和配置中小型网络架构首选不需要专用的数据存储劣势:性能损耗高不支持NetworkPolic......
  • 加载按钮样式
    加载按钮样式:  #wait{width:40px;height:40px;border-right:3pxsolid#09F;border-top:3pxsolidred;border-left:3pxsolidyellow;border-bottom:3pxsolidgreen;border-radius:40px;-moz-border-radius:40px;......
  • Windows环境下修改my.ini导致MySQL启动失败
    问题:修改my.ini导致MySQL启动失败在Windows环境中,使用默认编辑器编辑my.ini配置文件可能导致MySQL启动失败,是因为默认编辑器使用的是UTF-8编码。解决方法:更改编码为ANSI使用文本编辑器打开my.ini,选择“另存为”并将编码更改为ANSI。重新启动MySQL服务,确保配置文件与MySQL默认......
  • 从样板文件中导入样式到当前文档
    2023年11月24日QQ群友提出一个问题:SectionViewStyle的个别属性值无法获取,从而无法进行修改,开放的API中确实没有响应的枚举类型,从而无法使用SectionViewStyle.GetDisplayStylePlan()这个方法获取到DisplayStyle,于是我提出了采用导入样式的方法,提前准备好自己的样板文件,在样......