rabbitmq 安装

合集下载

rabbitmq 使用手册

rabbitmq 使用手册

rabbitmq 使用手册RabbitMQ 是一个开源的消息代理软件,它实现了高效的消息传递机制,可以在分布式系统中进行消息的发布和订阅。

下面是 RabbitMQ 的使用手册的详细精确说明:1. 安装 RabbitMQ:首先,你需要下载并安装 RabbitMQ。

你可以从RabbitMQ 官方网站上下载适合你操作系统的安装包,并按照官方文档中的说明进行安装。

2. 启动 RabbitMQ 服务器:安装完成后,你可以启动 RabbitMQ 服务器。

在大多数操作系统中,你可以通过命令行执行以下命令来启动RabbitMQ:```rabbitmq-server```如果一切正常,你将会看到 RabbitMQ 服务器成功启动的日志信息。

3. 创建和管理队列:RabbitMQ 使用队列来存储消息。

你可以使用 RabbitMQ 的管理界面或者命令行工具来创建和管理队列。

以下是一些常用的队列操作命令:- 创建队列:```rabbitmqadmin declare queue name=<queue_name>```- 查看队列列表:```rabbitmqadmin list queues```- 删除队列:```rabbitmqadmin delete queue name=<queue_name>```4. 发布和消费消息:使用 RabbitMQ,你可以将消息发布到队列中,并从队列中消费消息。

以下是一些常用的消息操作命令:- 发布消息:```rabbitmqadmin publish routing_key=<routing_key>payload=<message>```- 消费消息:```rabbitmqadmin get queue=<queue_name>```- 确认消息已被消费:```rabbitmqadmin ack delivery_tag=<delivery_tag> ```5. 设置消息交换机和绑定:RabbitMQ 使用消息交换机来将消息路由到队列。

rabbitmq的使用方法

rabbitmq的使用方法

rabbitmq的使用方法RabbitMQ是一个开源的消息代理软件,用于实现异步消息传递。

以下是使用RabbitMQ的一些基本方法:1. 安装和配置:首先,你需要从RabbitMQ的官网下载并安装RabbitMQ 服务器。

安装完成后,你可以通过浏览器访问RabbitMQ的管理界面,进行基本的配置。

2. 创建队列:在RabbitMQ中,消息被存储在队列中。

你可以使用RabbitMQ的管理界面或者通过编程的方式创建队列。

例如,使用Python 的pika库,你可以这样创建一个队列:```pythonimport pikaconnection = (('localhost'))channel = ()_declare(queue='hello')()```3. 发送消息:一旦你创建了队列,你就可以开始发送消息到这个队列。

同样使用pika库,你可以这样发送消息:```pythonimport pikaconnection = (('localhost'))channel = ()_publish(exchange='', routing_key='hello', body='Hello World!') ()```4. 接收消息:要接收消息,你需要创建一个消费者来从队列中获取消息。

消费者可以是任何能够处理RabbitMQ消息的应用程序。

例如,你可以创建一个Python消费者来接收消息:```pythonimport pikaconnection = (('localhost'))channel = ()_declare(queue='hello')def callback(ch, method, properties, body):print(f" [x] Received {body}")_consume(queue='hello', on_message_callback=callback,auto_ack=True)print(' [] Waiting for messages. To exit press CTRL+C')_consuming()```5. 确认消息处理:在RabbitMQ中,你可以选择自动确认(auto_ack)或手动确认(manual_ack)消息处理。

ubuntu系统下RabbitMQ安装和配置详细步骤(step by step)

ubuntu系统下RabbitMQ安装和配置详细步骤(step by step)

RabbitMQ安装需要安装较多的依赖包,之前如果安装过RabbitMQ-server必须要先彻底删除。

重装的ubuntu系统(ubuntu server)的开发环境几乎是裸的,再重新编译安装erlang需要一些关键库。

1. gcc/g++、make等开发工具Bash代码1.sudo apt-get install build-essential2. 其它Erlang用到的关键库Bash代码1.sudo apt-get install libncurses5-dev2.sudo apt-get install m43.sudo apt-get install libssl-dev3. 此外还有一些非关键库也可以装上,不然make也通不过Bash代码1.sudo apt-get install libc6 (Ubuntu 9.10以后自动带这个,所以不用再装了)2.sudo apt-get install unixodbc unixodbc-dev ODBC方式提供对传统关系数据库支持3.sudo apt-get install freeglut3-dev libwxgtk2.8-dev4. 安装JDK,需要这个编译JInterfacesudo apt-get install sun-java6-jdk安装后设置环境变量JAVA_HOME和PATH,并在/usr/bin中设置java和javac 的符号链接:Bash代码1.sudo ln -s /usr/local/jdk1.6.0_20/bin/java /usr/bin/java2.sudo ln -s /usr/local/jdk1.6.0_20/bin/javac /usr/bin/javac5. 在R13B03后,帮助文档的生成方式有了变化,要想自动生成帮助文件,需要安装xsltproc和Bash代码1.sudo apt-get install xsltproc2.sudo apt-get install fop6.然后下载安装ERLANG源代码(otp_src_R14B02.tar.gz)tar -xvf otp_src_R14B02.tar.gzcd otp_src_R14B02.tar.gzsudo ./configure --prefix=/otp/erlangsudo makesudo make install安装完毕,能够rm -fr otp_src_R14B02.tar.gz删除源代码然后改改/etc/profileexport PATH=/opt/erlang/bin:$PATHalias ls='ls -color=auto'alias ll='ll -lht'能够source /etc/profile一下,及时修改PATH7. 下载安装RabbitMQ-Server下载rabbitmq-server_2.4.1-1_all.deb软件包安装:dpkg –i rabbitmq-server_2.4.1-1_all.deb(有关dpkg安装软件的步骤和方法网上有很多)默认安装在ubuntu操作系统的/etc/lib8.使用和权限设置下面我们使用rabbitmqctl控制台命令(位于D:\rabbitmq\sbin>)来配置vhost,创建用户,密码,绑定权限等。

rabbitmq使用手册

rabbitmq使用手册

rabbitmq使用手册RabbitMQ是一种开源的消息队列中间件,采用AMQP协议,被广泛应用于构建可靠、高效的分布式系统。

本手册将详细介绍RabbitMQ 的安装、配置、使用和常见问题解决方案,帮助读者快速上手使用RabbitMQ。

第一章安装与配置1.1 环境准备在开始安装RabbitMQ之前,需要确保系统满足以下要求:操作系统(例如Linux、Windows)、Erlang运行时环境以及RabbitMQ软件包。

1.2 安装RabbitMQ按照文档提供的方式,在所选的操作系统上安装RabbitMQ。

安装过程中需注意版本兼容性和安全配置。

1.3 配置RabbitMQ在安装完成后,需要对RabbitMQ进行适当的配置。

主要包括网络配置、认证与授权、虚拟主机、交换机和队列的创建等。

第二章消息发布与订阅2.1 消息生产者通过使用RabbitMQ的API,开发者可以编写生产者代码将消息发布到RabbitMQ的交换机上。

这里需要注意消息的序列化和指定交换机名称。

2.2 消息消费者RabbitMQ的消费者通过订阅交换机的队列来接收消息,可以使用RabbitMQ的API编写消费者代码,并实现消息的处理逻辑。

2.3 消息确认机制RabbitMQ提供了消息的确认机制,确保消息在传输过程中的可靠性。

开发者可以选择隐式确认或显式确认来保证消息的消费状态。

第三章消息路由与过滤3.1 路由模式RabbitMQ支持多种路由模式,如直接路由、主题路由和广播路由。

开发者可以根据实际需求选择最适合的路由模式。

3.2 消息过滤通过使用RabbitMQ的消息过滤功能,可以根据消息的属性进行过滤,只有满足条件的消息才会被消费者接收。

第四章高级特性与扩展4.1 持久化使用RabbitMQ的持久化机制,可以确保消息在服务器重启后依然存在,防止消息丢失。

4.2 集群与高可用通过搭建RabbitMQ集群,可以提高系统的可用性和扩展性。

在集群中,消息将自动在节点之间进行复制。

RabbitMQ——安装、集群搭建、镜像队列配置

RabbitMQ——安装、集群搭建、镜像队列配置

RabbitMQ——安装、集群搭建、镜像队列配置⼀、环境说明1、Centos7.7-64位2、Erlang-OTP 233、RabbitMQ-3.8.9操作系统ip主机名配置centos 7.717.16.10.62rabbit-14核8gcentos 7.717.16.10.63rabbit-24核8gcentos 7.717.16.10.66rabbit-34核8g⼆、下载安装⽂件1、RabbitMQ软件:2、erlang是RabbitMQ的依賴軟件,在erlang官⽹下载以下版本:3、把下载的⽂件分别上传到3台服务器的 /root/soft/rabbitmq ⽬录下。

三、安装RabbitMQ依赖包安装基础依赖包1. 配置yum源:touch /etc/yum.repos.d/rabbitmq_erlang.repovim /etc/yum.repos.d/rabbitmq_erlang.repo[rabbitmq-erlang]name=rabbitmq-erlangbaseurl=https:///rabbitmq-erlang/rpm/erlang/23/el/7gpgcheck=1gpgkey=https:///rabbitmq/Keys/rabbitmq-release-signing-key.asc repo_gpgcheck=0enabled=12. 导⼊key:rpm --import https:///rabbitmq-release-signing-key.asc注:安装 rabbitMQ 时需要key。

3. 安装socat:yum -y install epel-releaseyum -y install socat注:安装 rabbitMQ 时需要依赖socat。

安装与配置erlang1. erlang和rabbitmq的版本对应关系2. 安装erlangcd /root/soft/rabbitmqrpm -ivh erlang-23.2.1-1.el7.x86_64.rpm3. 使⽤以下指令进⼊erlang如出现以下讯息表⽰成功安装:shell>erl⽤ctrl+c退出。

RabbitMQ集群搭建和使用

RabbitMQ集群搭建和使用

RabbitMQ集群搭建和使⽤⼀.环境准备1、选择RabbitMQ的版本注: 不同版本的Linux选择的RabbitMQ版本也不同,参照查看CentOS版本:more /etc/redhat-release2、RabbitMQ依赖于Erlang,两者版本需匹配,版本对照表如下: 2.1选择Erlang的版本⼆.安装单机RabbtiMQ2.1 安装Erlang2.1.1 安装Erlang依赖yum install gcc glibc-devel make ncurses-devel openssl-devel autoconf2.1.2 下载解压缩wget 复制的下载链接地址tar -xvf otp_src_20.3.tar.gz2.1.3 安装Erlang转到解压⽬录下 cd otp_src_20.3 挨个运⾏⼀下命令./configuremake install2.2 安装RabbitMQ2.2.1 下载RabbitMQwget 复制的下载链接地址2.2.2 安装RabbitMQrpm -i --nodeps rabbitmq-server-3.7.4-1.el6.noarch.rpm在/opt/rabbitmq⽂件夹下查看安装包:rpm -qa | grep -i rabbitmq-server-3.7.4-1.el6.noarch删除安装包:rpm -e rabbitmq-server-3.7.4-1.el6.noarch2.2.3 新建⽂件,指定节点名⽂件路径: /etc/rabbitmq/rabbitmq-env.conf⽂件内容: NODENAME=rabbit@节点名节点名设为机器名称即可2.2.4 启动RabbitMQ进⼊ /usr/lib/rabbitmq/bin/运⾏ rabbitmq-server按Ctrl+C,等⼀下就退出了2.2.5 Web管理后台加载插件:rabbitmq-plugins enable rabbitmq_management再次运⾏ rabbitmq-server三.RabbtiMQ⽤户管理3.1 参考链接3.2 添加⼀个⽤户rabbitmqctl add_user ⽤户名⽤户密码3.3 给⽤户赋⾓⾊rabbitmqctl set_user_tags ⽤户名⾓⾊名3.4 给⽤户赋权限rabbitmqctl set_permissions -p "/" ⽤户名 ".*" ".*" ".*"3.5 删除⽤户rabbitmqctl delete_user ⽤户名3.6查看⽤户rabbitmqctl list_users注: 默认⽤户为guest guest,可新建⽤户给⽂件赋权限:chmod 777 /⽂件夹名字/⽂件名字或者*四.RabbitMQ集群搭建4.1 环境准备多台(3台)安装RabbitMQ Server的服务器,服务器IP分别为 ip1,ip2,ip3,以选择ip1服务器为主节点为例4.2 保持.erlang.cookie⼀致1)复制ip1服务器中的.erlang.cookie(.erlang.cookie 存在于/var/lib/rabbitmq/.erlang.cookie 和~/.erlang.cookie中)2)保持ip1,ip2,ip3服务器中的/var/lib/rabbitmq/.erlang.cookie和~/.erlang.cookie⼀致4.3 后台启动各个节点这样就成功了,⽹页访问⼀下能成功就⾏切记:启动后不要关闭,否则会出现错误4.4 查看各节点状态rabbitmqctl status4.5 配置各节点的hosts⽂件⽂件路径:vi /etc/hosts⽂件内容:(注:名称为2.2.3中的节点名)10.170.1.22 linux0210.170.1.23 linux034.6 建⽴集群*以ip1服务器为主节点为例,在ip2,ip3上执⾏相同的如下操作ip1服务器要启动着(在/usr/lib/rabbitmq/bin下运⾏rabbitmq-server),然后在ip2和ip3上做以下操作rabbitmqctl stop_apprabbitmqctl reset //可以不做rabbitmqctl join_cluster rabbit@名称1rabbitmqctl start_app4.7 查看集群的状态信息rabbitmqctl cluster_status4.8 镜像队列1).登录web后台管理页⾯2).Admin -> Policies -> Add/update a policy3).填写内容(例如:Name:Mirror_RabbitMQPattern:^ //"^"表⽰所有,最好⼿动输⼊,不要粘贴Definition:HAmode=exactlyHAprarms=2HAsyncmode=automatic)4).Add policy添加⼀个,其他的也都会有该策略以下不⽤做4.9 退出集群rabbitmqctl stop_apprabbitmqctl resetrabbitmqctl start_app4.10 移除节点1)关闭要移除的节点Arabbitmqctl stop_app2)在其他节点B移除节点Arabbitmqctl forget_cluster_node rabbit@rabbitName五.负载均衡-HAProxy5.1 安装epel5.2 安装HAProxyyum -y install haproxy5.1/5.2每台服务器都安装5.3 修改配置⽂件1) 配置⽂件路径:vi /etc/haproxy/haproxy.cfg注:此配置需要在每台服务器上做⼀下,⾥⾯标红的IP必须和该配置⽂件所在的服务器IP⼀致2)在配置⽂件中追加如下内容:#---------------------------------------------------------------------# RabbitMQ集群负载均衡#---------------------------------------------------------------------# 1.HAProxy统计页⾯配置listen haproxy_front 10.170.1.18:1080mode httpstats refresh 30sstats uri /haproxy/statsstats realm Haproxy Managerstats auth admin:admin# 2.rabbitmq集群负载均衡配置# 通过10.170.1.18:5678接⼊rabbitmqlisten rabbitmq_cluster 10.170.1.18:5678option tcplogmode tcptimeout client 3htimeout server 3hbalance roundrobinserver node1 10.170.1.18:5672 check inter 5s rise 2 fall 3server node2 10.170.1.16:5672 check inter 5s rise 2 fall 3# 3.rabbitmq集群web管理页⾯均衡配置listen rabbitmq_admin 10.170.1.18:15678server node1 10.170.1.18:15672server node2 10.170.1.16:156725.4 重启HAproxyservice haproxy restart六.主备-Keepalived6.1 安装Keepalivedyum install keepalived6.2 创建监控脚本脚本路径:vi /etc/keepalived/check_haproxy.sh脚本内容:#!/bin/bashif [ $(ps -C haproxy --no-header | wc -l) -eq 0 ];thenfisleep 2if [ $(ps -C haproxy --no-header | wc -l) -eq 0 ];thenservice keepalived stopfi6.1/6.2主备机都需要做6.3 修改主机Keepalived配置⽂件⽂件路径:vi /etc/keepalived/keepalived.conf (这个⽂件先删除,然后在新建即可)⽂件内容:#Keepalived配置⽂件global_defs {router_id NodeA #路由ID, 主备的ID不能相同}#⾃定义监控脚本vrrp_script chk_haproxy {script "/etc/keepalived/check_haproxy.sh"interval 5weight 2}vrrp_instance VI_1 {state MASTER #Keepalived的⾓⾊。

rabbitmq使用手册

rabbitmq使用手册

RabbitMQ使用手册一、简介RabbitMQ是一个开源的消息代理软件,它实现了AMQP(高级消息队列协议)。

RabbitMQ可以在分布式系统中可靠地传递消息,并提供了多种消息传递模式。

通过使用RabbitMQ,应用程序可以解耦和简化其组件之间的通信。

二、安装与配置RabbitMQ可以通过包管理器(如APT或YUM)或直接从源代码进行安装。

安装完成后,您需要配置RabbitMQ服务器,包括设置用户、创建虚拟主机和配置交换机等。

三、生产者与消费者在RabbitMQ中,生产者负责创建并发送消息,而消费者负责接收和处理这些消息。

生产者需要先连接到RabbitMQ服务器,然后创建一个通道,并使用该通道发送消息到一个队列中。

消费者也需要连接到服务器,创建一个通道,然后从队列中接收消息。

四、消息路由RabbitMQ通过交换机和队列来实现消息路由。

交换机负责接收生产者发送的消息,并根据绑定的队列将消息转发给它们。

队列是存储消息的地方,消费者可以从队列中获取并处理消息。

五、可靠性RabbitMQ提供了多种可靠性机制,以确保消息在传输过程中不会丢失或重复。

例如,您可以使用持久化队列和交换机来确保即使在服务器重启后,消息也不会丢失。

此外,您还可以使用确认机制来确保消息被成功处理。

六、插件与扩展RabbitMQ提供了许多插件和扩展,以支持更多的功能和协议。

例如,您可以使用RabbitMQ的插件来支持延迟消息、主题交换、集群等。

此外,还有一些第三方插件可以与RabbitMQ集成,以支持其他协议和功能。

七、监控与管理RabbitMQ提供了丰富的监控和管理工具,以帮助您了解系统的运行状况和性能。

您可以使用RabbitMQ的管理插件来查看队列的统计信息、监视内存使用情况、查看日志等。

此外,您还可以使用第三方工具来进一步扩展监控和管理功能。

rabbitmq,python使用方法

rabbitmq,python使用方法

一、介绍RabbitMQRabbitMQ是使用AMQP(高级消息队列协议)的开源消息代理软件。

它可以用来处理高度的消息量,同时支持多种消息传输协议,如:AMQP、MQTT、STOMP等。

RabbitMQ的消息队列机制可以用来实现应用程序之间的异步通信,可以更好地解耦,提高系统的可扩展性和灵活性。

二、RabbitMQ的安装和部署1. 安装Erlang在安装RabbitMQ之前,首先需要安装Erlang,因为RabbitMQ是使用Erlang语言开发的。

在Linux环境下,可以通过apt或yum包管理器安装Erlang;在Windows环境下,可以通过下载安装包进行安装。

2. 安装RabbitMQ安装完成Erlang之后,可以下载RabbitMQ安装包,并按照冠方文档进行安装。

安装完成后,可以通过浏览器访问网络协议xxx,使用默认用户名和密码guest/guest登入RabbitMQ的管理界面。

3. 配置RabbitMQ在安装和部署完RabbitMQ之后,可以根据实际需要进行配置,如配置虚拟主机、用户、权限、队列等。

三、Python使用RabbitMQ1. 安装pika库在Python中使用RabbitMQ,通常会使用pika库来进行操作。

可以通过pip命令来安装pika库:`pip install pika`2. 连接RabbitMQ在Python中可以通过pika库来连接RabbitMQ,示例代码如下:```pythonimport pikaconnection =pika.BlockingConnection(pika.ConnectionParameters('localhost')) channel = connection.channel()```3. 发送消息通过pika库,可以很方便地向RabbitMQ发送消息,示例代码如下:```pythonchannel.queue_declare(queue='hello')channel.basic_publish(exchange='', routing_key='hello',body='Hello, RabbitMQ!')print(" [x] Sent 'Hello, RabbitMQ!'")```4. 接收消息通过pika库,可以很方便地从RabbitMQ接收消息,示例代码如下:```pythondef callback(ch, method, properties, body):print(" [x] Received r" body)channel.basic_consume(queue='hello',on_message_callback=callback, auto_ack=True)print(' [*] W本人ting for messages. To exit press CTRL+C') channel.start_consuming()```四、总结通过以上内容的介绍,我们了解了RabbitMQ的基本概念,安装和部署方法,以及在Python中使用RabbitMQ的方法。

Linux系统RabbitMQ高可用集群安装部署文档

Linux系统RabbitMQ高可用集群安装部署文档

Linux系统RabbitMQ⾼可⽤集群安装部署⽂档RabbitMQ⾼可⽤集群安装部署⽂档架构图1)RabbitMQ集群元数据的同步RabbitMQ集群会始终同步四种类型的内部元数据(类似索引):a.队列元数据:队列名称和它的属性;b.交换器元数据:交换器名称、类型和属性;c.绑定元数据:⼀张简单的表格展⽰了如何将消息路由到队列;d.vhost元数据:为vhost内的队列、交换器和绑定提供命名空间和安全属性;2)集群配置⽅式cluster:不⽀持跨⽹段,⽤于同⼀个⽹段内的局域⽹;可以随意的动态增加或者减少;节点之间需要运⾏相同版本的 RabbitMQ 和 Erlang。

节点类型RAM node:内存节点将所有的队列、交换机、绑定、⽤户、权限和 vhost 的元数据定义存储在内存中,好处是可以使得像交换机和队列声明等操作更加的快速。

Disk node:将元数据存储在磁盘中,单节点系统只允许磁盘类型的节点,防⽌重启 RabbitMQ 的时候,丢失系统的配置信息。

解决⽅案:设置两个磁盘节点,⾄少有⼀个是可⽤的,可以保存元数据的更改。

Erlang Cookieerlang Cookie 是保证不同节点可以相互通信的密钥,要保证集群中的不同节点相互通信必须共享相同的 Erlang Cookie3)搭建RabbitMQ集群所需要安装的组件a.Jdk 1.8b.Erlang运⾏时环境c.RabbitMq的Server组件1、安装yum源⽂件2、安装Erlang# yum -y install erlang3、配置java环境 /etc/profileJAVA_HOME=/usr/local/java/jdk1.8.0_151PATH=$JAVA_HOME/bin:$PATHCLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar4、安装配置rabbitmq# tar -xf rabbitmq-server-generic-unix-3.6.15.tar -C /usr/local/# mv /usr/local/rabbitmq_server-3.6.15/ /usr/local/rabbitmq5、配置RabbitMQ环境变量/etc/profileRABBITMQ_HOME=/usr/local/rabbitmqPATH=$PATH:$ERL_HOME/bin:/usr/local/rabbitmq/sbin# source /etc/profile6、修改主机配置⽂件/etc/hosts192.168.2.208 rabbitmq-node1192.168.2.41 rabbitmq-node2192.168.2.40 rabbitmq-node3各个主机修改配置⽂件保持⼀致# /root/.erlang.cookie7、后台启动rabbitmq# /usr/local/rabbitmq/sbin/rabbitmq-server -detached添加⽤户# rabbitmqctl add_user admin admin给⽤户授权# rabbitmqctl set_user_tags admin administrator# rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"启⽤插件,可以使⽤rabbitmq管理界⾯# rabbitmq-plugins enable rabbitmq_management查看⽤户列表# rabbitmqctl list_users查看节点状态# rabbitmqctl status查看集群状态# rabbitmqctl cluster_status查看插件# rabbitmq-plugins list添加防⽕墙规则/etc/sysconfig/iptables-A INPUT -m state --state NEW -m tcp -p tcp --dport 27017 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 28017 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 15672 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 5672 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 25672 -j ACCEPT8、添加集群node节点,从节点执⾏(⽬前配置2个节点)# rabbitmqctl stop_app# rabbitmqctl join_cluster --ram rabbit@rabbitmq-node2或者# rabbitmqctl join_cluster rabbit@rabbitmq-node2# rabbitmqctl change_cluster_node_type ram启动节点#rabbitmqctl start_app9、删除集群node 节点删除1. rabbitmq-server -detached2. rabbitmqctl stop_app3. rabbitmqctl reset4. rabbitmqctl start_app设置镜像队列策略在web界⾯,登陆后,点击“Admin--Virtual Hosts(页⾯右侧)”,在打开的页⾯上的下⽅的“Add a new virtual host”处增加⼀个虚拟主机,同时给⽤户“admin”和“guest”均加上权限1、2、# rabbitmqctl set_policy -p hasystem ha-allqueue "^" '{"ha-mode":"all"}' -n rabbit"hasystem" vhost名称, "^"匹配所有的队列, ha-allqueue 策略名称为ha-all, '{"ha-mode":"all"}' 策略模式为 all 即复制到所有节点,包含新增节点,则此时镜像队列设置成功.rabbitmqctl set_policy [-p Vhost] Name Pattern Definition [Priority]-p Vhost:可选参数,针对指定vhost下的queue进⾏设置Name: policy的名称Pattern: queue的匹配模式(正则表达式)Definition:镜像定义,包括三个部分ha-mode, ha-params, ha-sync-modeha-mode:指明镜像队列的模式,有效值为 all/exactly/nodesall:表⽰在集群中所有的节点上进⾏镜像exactly:表⽰在指定个数的节点上进⾏镜像,节点的个数由ha-params指定nodes:表⽰在指定的节点上进⾏镜像,节点名称通过ha-params指定ha-params:ha-mode模式需要⽤到的参数ha-sync-mode:进⾏队列中消息的同步⽅式,有效值为automatic和manualpriority:可选参数,policy的优先级注以上集群配置完成⾼可⽤HA配置Haproxy 负载均衡,keepalived实现健康检查HA服务安装配置解压⽂件# tar -zxf haproxy-1.8.17.tar.gz查看内核版本# uname –r# yum -y install gcc gcc-c++ make切换到解压⽬录执⾏安装# make TARGET=3100 PREFIX=/usr/local/haproxy # make install PREFIX=/usr/local/haproxy创建配置⽂件相关⽬录# mkdir /usr/local/haproxy/conf# mkdir /var/lib/haproxy/# touch /usr/local/haproxy/haproxy.cfg# groupadd haproxy# useradd haproxy -g haproxy# chown -R haproxy.haproxy /usr/local/haproxy# chown -R haproxy.haproxy /var/lib/haproxy配置⽂件globallog 127.0.0.1 local2chroot /var/lib/haproxypidfile /var/run/haproxy.pidmaxconn 4000user haproxygroup haproxydaemon# turn on stats unix socketstats socket /var/lib/haproxy/stats#---------------------------------------------------------------------defaultsmode httplog globaloption httplogoption dontlognulloption http-server-closeoption redispatchretries 3timeout http-request 10stimeout queue 1mtimeout connect 10stimeout client 1mtimeout server 1mtimeout http-keep-alive 10stimeout check 10smaxconn 3000#监控MQ管理平台listen rabbitmq_adminbind 0.0.0.0:8300 server rabbitmq-node1 192.168.2.208:15672 server rabbitmq-node2 192.168.2.41:15672 server rabbitmq-node3 192.168.2.40:15672#rabbitmq_cluster监控代理listen rabbitmq_local_clusterbind 0.0.0.0:8200#配置TCP模式mode tcpoption tcplog#简单的轮询balance roundrobin#rabbitmq集群节点配置 server rabbitmq-node1 192.168.2.208:5672 check inter 5000 rise 2 fall 2 server rabbitmq-node2 192.168.2.41:5672 check inter 5000 rise 2 fall 2 server rabbitmq-node3 192.168.2.40:5672 check inter 5000 rise 2 fall 2 #配置haproxy web监控,查看统计信息listen private_monitoringbind 0.0.0.0:8100mode httpoption httplogstats enablestats uri /statsstats refresh 30s#添加⽤户名密码认证stats auth admin:admin启动haproxy服务# /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/conf/haproxy.cfg#Keepalived 源码安装软件包路径 /usr/local/src安装路径 /usr/local/keepalived配置⽂件/etc/keepalived/keeplived.conf# tar -zxf keepalived-2.0.10.tar.gz#安装依赖包# yum -y install openssl-devel libnl libnl-devel libnfnetlink-devel# ./configure --prefix=/usr/local/keepalived && make && make install创建keepalived配置⽂件⽬录#mkdir /etc/keepalived拷贝配置⽂件到/etc/keepalived⽬录下# cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/复制keepalived脚本到/etc/init.d/ ⽬录# cp /usr/local/src/keepalived-2.0.10/keepalived/etc/init.d/keepalived /etc/init.d/拷贝keepalived脚本到/etc/sysconfig/ ⽬录# cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/建⽴软连接# ln -s /usr/local/keepalived/sbin/keepalived /sbin/添加到开机启动# chkconfig keepalived on查看服务状况# systemctl status keepalivedKeepalived启动# systemctl start keepalivedmaster 配置⽂件#Master :global_defs {notification_email {134********m@}notification_email_from 134********m@smtp_server 127.0.0.1smtp_connect_timeout 30router_id NGINX_DEVEL}vrrp_script chk_haproxy {script "/usr/local/keepalived/check_haproxy.sh"interval 2weight 2fall 3rise 2}vrrp_instance haproxy_1 {state MASTERinterface ens33virtual_router_id 104priority 150advert_int 1mcast_src_ip 192.168.2.41authentication {auth_type PASSauth_pass 1111}track_interface {ens33}track_script {check_haproxy.sh}virtual_ipaddress {192.168.33.110}}#virtual_server 192.168.2.110 80 {# delay_loop 6 # 设置健康检查时间,单位是秒# lb_algo wrr # 设置负载调度的算法为wlc# lb_kind DR # 设置LVS实现负载的机制,有NAT、TUN、DR三个模式# nat_mask 255.255.255.0# persistence_timeout 0# protocol TCP# real_server 192.168.220.128 80 { # 指定real server1的IP地址# weight 3 # 配置节点权值,数字越⼤权重越⾼#TCP_CHECK {# connect_timeout 10# nb_get_retry 3# delay_before_retry 3# connect_port 80# }# }# }}#Slave :global_defs {notification_email {134********m@}notification_email_from 134********m@smtp_server 127.0.0.1smtp_connect_timeout 30router_id NGINX_DEVEL}vrrp_script chk_haproxy {script "/usr/local/keepalived/check_haproxy.sh"interval 2weight 2fall 3rise 2}vrrp_instance haproxy_2 {state SLAVEinterface ens33virtual_router_id 104priority 150advert_int 1mcast_src_ip 192.168.2.208authentication {auth_type PASSauth_pass 1111}track_interface {ens33}track_script {check_haproxy.sh}virtual_ipaddress {192.168.2.246}}#virtual_server 192.168.2.110 80 {# delay_loop 6 # 设置健康检查时间,单位是秒# lb_algo wrr # 设置负载调度的算法为wlc# lb_kind DR # 设置LVS实现负载的机制,有NAT、TUN、DR三个模式# nat_mask 255.255.255.0# persistence_timeout 0# protocol TCP# real_server 192.168.220.128 80 { # 指定real server1的IP地址# weight 3 # 配置节点权值,数字越⼤权重越⾼#TCP_CHECK {# connect_timeout 10# nb_get_retry 3# delay_before_retry 3# connect_port 80# }# }# }}haproxy检测#!/bin/bashHaproxyStatus=`ps -C haproxy --no-header | wc -l`if [ $HaproxyStatus-eq 0 ];then/etc/init.d/haproxy startsleep 3if [ `ps -C haproxy --no-header | wc -l ` -eq 0 ];then/etc/init.d/keepalived stopfifi。

RabbitMQ的安装配置

RabbitMQ的安装配置

RabbitMQ的安装配置环境:Ubuntu16 linux系统,ERlang语⾔的源码包:otp_src_22.0.tar.gz,rabbitMQ安装包:rabbitmq-server-generic-unix-3.7.16.tar ,jdk1.8(ERLang的编译需要系统有jdk的⽀持)想要安装rabbitMQ服务组件,需要配置ERlang语⾔环境的依赖。

⼀:ERLang语⾔的安装与配置1.更新系统软件包,想要安装ERlang语⾔环境,需要先配置⽀持库1.apt-get update2.apt-get -y install libncurses5-dev //2或者2.1依赖库选择⼀个即可2.1 apt-get -y install make g++ gcc libpcre3 libpcrecpp* libpcre3-dev libssl-dev autoconf automake libtool nfs-kernel-server libncurses5-dev libaio.dev ruby-dev rubygems vim 2.把已经上传的ERlang语⾔环境包上传服务器解压缩tar xzvf /srv/ftp/otp_src_22.0.tar.gz -C /usr/local/src/3.ERLang编译完成后需要设置⼀个编译后的程序的存储⽬录mkdir -p /usr/local/erlang4.进⼊ERLang源码⽬录cd /usr/local/src/otp_src_22.0/5.指定编译后的内容保存到指定⽬录,./configure --prefix=/usr/local/erlang6.对源码进⾏编译make && make install7.编译完成后,所有内容会⾃动保存在之前指定的“usr/local/erlang”⽬录,为了⽅便使⽤,修改profile配置⽂件,把内容设置到系统环境中vim /etc/profileexport ERLANG_HOME=/usr/local/erlangexport PATH=:$ERLANG_HOME/bin:source /etc/profile //添加后配置后进⾏激活注:如果之后出现Command 'ls' is available in '/bin/ls'类似错误,请参照我的环境变量位置添加,/usr/bin/vim /etc/profile 命令可以使⽤vim对profile⽂件进⾏修改,参考:export JAVA_HOME=/usr/local/jdk1.8export MYSQL_HOME=/usr/local/mysqlexport M2_HOME=/usr/local/mavenexport ERLANG_HOME=/usr/local/erlangexport PATH=$PATH:$JAVA_HOME/bin:$MYSQL_HOME/bin:$M2_HOME/bin:$ERLANG_HOME/bin:8.检查环境配置是否正常,可以直接输⼊ “ erl ” ,命令启动erlang的交互式编程环境打印erlio:format("Hello World!").退出编译环境halt().9.如果此时成功打印出 “Hello World!” ,说明我们的ERL环境已经配置好了。

RabbitMQ的安装和配置化可视界面

RabbitMQ的安装和配置化可视界面

RabbitMQ的安装和配置化可视界⾯RabbitMQ在windows下的安装RabbitMQ 它依赖于Erlang,在window上安装时,需要先安装Erlang。

⾸先确定你的window电脑是32位还是64位,然后下载对应版本的Erlang软件。

以下的安装以window 64位电脑举例。

Erlang/OTP包的下载地址: /download.htmlErlang/OTP(otp_win64_17.5.exe)的安装步骤:1. 运⾏otp_win64_17.5.exe2. 点击“Next”,选择安装的⽬录,这⾥为D:\java\erl6.43. 点击“Next”,点击“Install”开始安装,安装完成。

(可以留意⼀下⾥⾯的选项)RabbitMQ Server的下载与安装RabbitMQ的下载地址:/download.htmlRabbitMQ的安装步骤:1. 直接运⾏rabbitmq-server-3.5.2.exe2. 点击"Next",选择安装的⽬录,这⾥为D:\java\RabbitMQ_Server3. 点击"Install",点击"Finish",安装成功。

(可以留意⼀下⾥⾯的选项)ps:安装完Rabbit MQ以后,服务会⾃动运⾏,这时环境变量⾥的ERLANG_HOME会⾃动⽣成,在”环境变量”中检查是否存在,如果不存在,请在”环境变量”中⼿动添加,配置Erlang环境变量ERLANG_HOME=D:\java\erl6.4。

如果没有,点击"新建"。

检查RabbitMQ运⾏状态1. 打开命令⾏命令⾏,进⼊RabbitMQ的安装⽬录: cd D:\java\RabbitMQ_Server\rabbitmq_server-3.5.2\sbin2. 输⼊ rabbitmqctl status如果出现以下的图,说明安装是成功的,并且说明现在RabbitMQ Server已经启动了。

linux安装rabbitMQ详细教程

linux安装rabbitMQ详细教程

linux安装rabbitMQ详细教程经过第⼀次的安装失败,第⼆次总算是成功了,这⾥总结⼀下。

第⼀步:下载版本对应的rpm安装包2. 下载RabbitMQ安装包,这⾥使⽤的是rpm, 当然了也可以下载源码进⾏编译安装。

3. 下载Socat安装包 rabbitmq安装依赖于socat,所以需要下载socat。

第⼆步:安装前的准备⼯作,因为Erlang安装需要⼏个类库和环境。

执⾏下⾯命 yum -y install ncurses-devel yum -y install openssl-devel yum -y install unixODBC-devel yum -y install gcc-c++第三步:按照以下顺序安装 ⼀定按照以下顺序安装: ① rpm -ivh erlang-18.3-1.el6.x86_64.rpm ② rpm -ivh socat-1.7.3.2-1.el6.lux.x86_64.rpm ③ rpm -ivh rabbitmq-server-3.6.5-1.noarch.rpm第四步:配置rabbitmq: vim /usr/lib/rabbitmq/lib/rabbitmq_server-3.6.5/ebin/rabbit.app第五步:安装管理 web页⾯访问插件。

rabbitmq-plugins enable rabbitmq_management第六步:启动RabbitMQ ① cd /usr/lib/rabbitmq/bin ② ./rabbitmq-server start如果不开放5672端⼝,那么在IDEA中启动项⽬就⽆法连接rabbitMQ。

本⼈就是因为忘记了5672端⼝在IDEA中⼀直连接不上浪费了许久时间。

另外记得给IDEA中配置的rabbitmq的⽤户开放权限否则也是⽆法连接。

另外:当能访问web页⾯时,可以页⾯直接添加⽤户添加权限,就不⽤在通过命令进⾏添加了。

rabbitmq使用流程

rabbitmq使用流程

rabbitmq使用流程RabbitMQ是一个消息队列中间件,常用于分布式系统之间的消息传递。

它实现了AMQP(Advanced Message Queuing Protocol)协议,提供了可靠的消息传递机制。

RabbitMQ的使用流程可以分为以下几个步骤:1. 安装和配置RabbitMQ:首先,需要安装RabbitMQ服务器,并配置必要的参数,如监听地址、端口号、虚拟主机等。

RabbitMQ提供了Web管理界面,可以在其中进行进一步的配置和监控。

2. 创建消息发布者(Producer):消息发布者是生产和发送消息的一方。

在代码中,可以使用RabbitMQ的客户端库连接到RabbitMQ服务器,并创建一个连接和一个通道。

通道是消息传递的基本单元,负责消息的发送和接收。

通过通道,可以声明一个交换机(Exchange)和一个队列(Queue),并将其绑定在一起。

3. 发布消息:一旦连接和通道创建成功,发布者可以使用通道的basic.publish方法将消息发送到交换机。

消息可以是任何格式的数据,可以是字符串、JSON、二进制等。

4. 创建消息消费者(Consumer):消息消费者是接收和处理消息的一方。

消费者也需要连接到RabbitMQ服务器,并创建一个连接和一个通道。

通过通道,可以声明和绑定与发布者相同的交换机和队列。

5. 消费消息:一旦连接和通道创建成功,消费者可以使用通道的basic.consume方法订阅队列,以接收从交换机转发到队列的消息。

RabbitMQ采用推模式将消息推送给消费者,消费者需要编写处理消息的逻辑。

6. 确认消息的接收(ACK):消费者可以在处理完消息后,调用通道的basic.ack方法确认消息的接收。

这是RabbitMQ提供的一种消息确认机制,用于保证消息的可靠投递。

如果消费者没有发送ACK,RabbitMQ会认为消息未被成功消费,并将其重新投递给其他消费者或者存储起来。

windows下安装rabbitMQ及操作常用命令

windows下安装rabbitMQ及操作常用命令

windows下安装rabbitMQ及操作常⽤命令rabbitMQ是⼀个在AMQP协议标准基础上完整的,可服⽤的企业消息系统。

它遵循Mozilla Public License开源协议,采⽤ Erlang 实现的⼯业级的消息队列(MQ)服务器,Rabbit MQ 是建⽴在Erlang OTP平台上。

1.安装Erlang所以在安装rabbitMQ之前,需要先安装Erlang 。

⼩编使⽤的是,需要其他版本或者32位系统的,可以去下载。

全部点击“下⼀步”就⾏。

有的选择其他的安装⽅式,可能需要添加⼀下系统环境变量(正常安装的也要检查下):有最好,没有的话就⼿动添加嘛。

2.安装RabbitMQ下载运⾏,需要其他版本或者32位系统的,可以去下载。

依旧可以不改变默认进⾏安装。

需要注意:默认安装的RabbitMQ 监听端⼝是56723.配置激活 RabbitMQ's Management Plugin使⽤RabbitMQ 管理插件,可以更好的可视化⽅式查看Rabbit MQ 服务器实例的状态。

打开命令窗⼝:输⼊命令:"C:\Program Files\RabbitMQ Server\rabbitmq_server-3.6.5\sbin\rabbitmq-plugins.bat" enable rabbitmq_management这样,就安装好插件了,是不是能使⽤了呢?别急,需要重启服务才⾏,使⽤命令:net stop RabbitMQ && net start RabbitMQ这时候的,也许会出现这种结果:“发⽣错误:发⽣系统错误 5。

拒绝访问。

”这是什么⿁?查了下,原来,5代表的是:不是系统管理员权限。

问题解决⽅案:使⽤管理员打开cmd再执⾏此命令:这样就结束了吗?当然没有。

创建⽤户,密码,绑定⾓⾊使⽤rabbitmqctl控制台命令(位于C:\Program Files\RabbitMQ Server\rabbitmq_server-3.6.5\sbin>)来创建⽤户,密码,绑定权限等。

一、RabbitMQ安装与测试连接

一、RabbitMQ安装与测试连接

⼀、RabbitMQ安装与测试连接⼀、下载NuGet⽀持的RabbitMQ.Client客户端库与安装RabbitMQ服务。

1、安装客户端库操作服务。

2、安装服务。

https:///install-windows.html步骤⼀、下载Erlang。

步骤⼆、下载RabbitMQ服务采纳版本。

下载实践:3、运⾏服务:1、执⾏rabbitmq命令⾏⼯具(rabbitmqctl ): rabbitmqctl -q status //打印了⼀些rabbitmq服务状态信息,包括内存,硬盘,和使⽤erlong的版本信息 rabbitmqctl list_queues //查看所有队列消息RabbitMQ GUID使⽤:安装了Rabbitmq后,默认也安装了该管理⼯具,执⾏命令即可启动: rabbitmq-plugins enable rabbitmq_management(先定位到rabbitmq安装⽬录)启动后,直接在浏览器地址输⼊:账号密码都是:guest4、添加⽤户、授权、登录:5、代码测试:为了展⽰RabbitMQ的基本使⽤,我们发送⼀个HelloWorld消息,然后接收并处理:⾸先创建⼀个控制台程序,⽤来将消息发送到RabbitMQ的消息队列中,代码如下:static void Main(string[] args){var factory = new ConnectionFactory();factory.HostName = "localhost";erName = "Bruce";factory.Password = "Bruce123456";using (var connection = factory.CreateConnection()){using (var channel = connection.CreateModel()){//1、创建名为queue1队列。

rabbitmq二进制解压后默认存储路径

rabbitmq二进制解压后默认存储路径

一、RabbitMQ二进制解压1. 在进行RabbitMQ二进制解压前,首先要下载RabbitMQ的二进制安装包,可以从冠方全球信息站或其他可信赖的渠道下载到最新版本的RabbitMQ安装包。

2. 下载完成后,将安装包解压到指定的目录中,解压完成后可以看到一些子目录和文件。

二、RabbitMQ二进制解压后默认存储路径1. 在解压RabbitMQ二进制文件后,默认的存储路径为解压出的RabbitMQ文件夹所在的目录。

2. 一般来说,RabbitMQ的二进制安装包解压后,会在当前目录下生成一个名为“rabbitmq_server-x.x.x”的文件夹,其中x.x.x代表版本号。

这个文件夹就是RabbitMQ的安装目录。

3. 在这个安装目录中,你可以找到bin、etc、plugins等子目录,以及一些配置文件和可执行文件。

4. 默认情况下,RabbitMQ二进制解压后的默认存储路径为安装目录,用户可以根据自己的需求进行相关配置和存储路径的修改。

三、RabbitMQ二进制解压后的相关操作1. 在解压完成后,用户需要对RabbitMQ进行相关配置,包括配置文件的修改、添加用户和权限等。

2. 用户可以在解压出的RabbitMQ安装目录的etc目录下找到rabbitmq.config等配置文件,根据需要进行相应的修改。

3. 用户还可以通过执行RabbitMQ安装目录中的命令来添加用户、设置权限以及启动RabbitMQ服务。

4. 解压RabbitMQ二进制文件后,用户需要对其进行一系列的操作和配置,以确保RabbitMQ能够正常运行。

四、RabbitMQ二进制解压后的存储路径修改1. 如果用户希望修改RabbitMQ二进制解压后的存储路径,可以通过以下步骤进行操作。

2. 用户需要将解压出的RabbitMQ文件夹移动到指定的目录中。

用户可以选择任何合适的目录作为RabbitMQ的存储路径。

3. 移动完成后,用户需要修改RabbitMQ的配置文件,将相关路径进行相应的修改。

如何使用RabbitMQ进行消息队列管理

如何使用RabbitMQ进行消息队列管理

如何使用RabbitMQ进行消息队列管理近年来,随着互联网技术的发展,各种在线服务逐渐成为人们日常生活中必不可少的一部分。

然而在基于互联网技术开发的应用中,数据的传递和处理却成了一个极其繁琐的问题。

为了解决这个问题,开发者们提出了一种新的解决方案——消息队列(Message Queue)。

消息队列是一种异步的通信机制,通过将消息存放到队列中,再有消费者来消费消息,实现了解耦和剪除速度等问题。

而为了方便消息队列的管理和部署,RabbitMQ作为一种面向消息协议的开源消息代理软件,逐渐被越来越多的人所使用。

接下来我将详细讲述如何使用RabbitMQ进行消息队列管理。

一、安装RabbitMQ在使用RabbitMQ之前,需要先安装这个软件。

RabbitMQ有多种安装方式,例如官网提供的安装包、容器化方式等。

这里我介绍的是在Centos 7系统中使用yum包管理器进行安装。

首先,需要检查是否安装了epel-release源$ sudo yum install epel-release$ sudo yum update接下来,安装RabbitMQ$ sudo yum install erlang$ sudo yum install rabbitmq-server启动RabbitMQ服务$ sudo systemctl enable rabbitmq-server.service$ sudo systemctl start rabbitmq-server.service安装完成后,可以通过访问http://localhost:15672/来访问RabbitMQ的管理界面。

默认的用户名和密码均为guest。

二、创建队列创建队列是使用RabbitMQ的第一步。

在RabbitMQ中,每个消息都需要存放在一个具体的队列中,才能够被消费者获取到。

在RabbitMQ中,可以通过多种方式来创建队列。

这里主要介绍通过RabbitMQ命令行管理工具rabbitmqadmin以及RabbitMQ 的Web管理界面来创建队列的方法。

mysql-canal-rabbitmq安装部署超详细教程

mysql-canal-rabbitmq安装部署超详细教程

mysql-canal-rabbitmq安装部署超详细教程⽬录1.1. 开启 MySQL 的 binlog ⽇志1.2. 配置 rabbitmq Exchanges 和 Queues1.3. 安装单机 canal1.3.1. 下载安装1.3.2. 配置⽂件1.3.3. 启动 canal 服务1.4. 安装集群 canal1.4.1. 安装 canal-admin1.4.2. 添加单机 canal-server 节点1.4.3. 添加集群 canal-server 节点1.5. canal 配置说明1.5.1. canal.properties1.5.2. instance.properties1.5.3. properties 配置⽂件1.6. 问题处理1.7. 参考资料1.1. 开启 MySQL 的 binlog ⽇志1.修改f或my.ini(windows), 添加配置项:# binlog ⽇志存放路径log-bin=D:\env\mysql-5.7.28-winx64\binlog# ⽇志中记录每⼀⾏数据被修改的形式binlog-format=ROW# 当前机器的服务 ID, 如果为集群时不能重复server_id=12.重启 mysql 服务后, 查看配置变量是否⽣效:mysql> show variables like '%log_bin%';+---------------------------------+----------------------+| Variable_name | Value |+---------------------------------+----------------------+| log_bin | ON || log_bin_basename | D:\env\mysql-5 || log_bin_index | D:\env\mysql-5.index || log_bin_trust_function_creators | OFF || log_bin_use_v1_row_events | OFF || sql_log_bin | ON |+---------------------------------+----------------------+6 rows in set, 1 warning (0.00 sec)配置 mysql 数据库的canal⽤户mysql -uroot -p登录 mysql, 创建并授权⽤户canal;CREATE USER canal IDENTIFIED BY 'canal';GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%';FLUSH PRIVILEGES;1.2. 配置 rabbitmq Exchanges 和 Queues1.新建Queue2.新建Exchange3.设置 Queue ⾥的 Bindings, 填写Exchange名称, 以及路由Routing key;1.3. 安装单机 canal1.3.1. 下载安装并解压缩;sudo wget https:///alibaba/canal/releases/download/canal-1.1.4/canal.deployer-1.1.4.tar.gzsudo tar -zxvf canal.deployer-1.1.4.tar.gz最新版本1.1.5的安装sudo wget https:///alibaba/canal/releases/download/canal-1.1.5-alpha-1/canal.deployer-1.1.5-SNAPSHOT.tar.gz sudo tar -zxvf canal.deployer-1.1.5-SNAPSHOT.tar.gz1.3.2. 配置⽂件1.3.2.1. 节点配置⽂件 canal.properties# tcp bind ip, 当前节点的 IP 地址canal.ip = 192.168.2.108# register ip to zookeeper, 注册到 ZK 的 IP 地址, 如下图1.canal.register.ip = 192.168.2.108canal.zkServers = zk集群# tcp, kafka, RocketMQ, 最新版本 1.1.5 可以直接连接 rabbitmqcanal.serverMode = rabbitmq# destinations, 当前 server 上部署的 instance 列表, 对应各个实例⽂件夹(../conf/<instance_name>)名称canal.destinations = example2# 设置 mq 服务器地址, 此处为 rabbitmq 的服务器地址# !! 此处下载后默认的配置是有配置IP:端⼝的# rabbitmq 此处则不需要配置端⼝canal.mq.servers = 192.168.208.100# ⼀下⼏项均为 1.1.5 新版本新增⽀持 rabbitmq 的配置canal.mq.vhost=/canal.mq.exchange=example2-ex # 指定 rabbitmq 上的 exchange 名称, "新建 `Exchange`" 步骤新建的名称ername=admin # 连接 rabbitmq 的⽤户名canal.mq.password=**** # 连接 rabbitmq 的密码canal.mq.aliyunuid=1.3.2.2. 实例配置⽂件 instance.properties# position info, 数据库的连接信息canal.instance.master.address=192.168.2.108:3306# 以下两个配置, 需要在上⾯配置的 address 的数据库中执⾏ `SHOW MASTER STATUS` 获取的 `File` 和 `Position` 两个字段值=mysql-5.7canal.instance.master.position=674996# table meta tsdb info, 禁⽤ tsdb 记录 table meta 的时间序列版本canal.instance.tsdb.enable=false# username/password, 实例连接数据的⽤户名和密码canal.instance.dbUsername=canalcanal.instance.dbPassword=canal# table regex, 正则匹配需要监听的数据库表canal.instance.filter.regex=ysb\\.useropcosttimes_prod# mq config, 指定 rabbitmq 设置绑定的路由, 详见"配置rabbitmq"步骤⾥的第三步配置的`Routing key`canal.mq.topic=example2-routingkey1.3.3. 启动 canal 服务Linux 对应的启动脚本./bin/startup.sh, Windows 对应的启动脚本./bin/startup.bat; 以 Windows 为例:λ .\startup.batstart cmd : java -Xms128m -Xmx512m -XX:PermSize=128m -Djava.awt.headless=true .preferIPv4Stack=true -Dapplication.codeset=UTF-8 -Dfile.encoding=UTF-8 -server -Xdebug -Xnoagent piler=NONE -Xrunjdwp:transport=dt_socket,add Java HotSpot(TM) Server VM warning: ignoring option PermSize=128m; support was removed in 8.0Listening for transport dt_socket at address: 9099最后⼿动修改数据库数据, 或者等待其他的修改, 再查看⼀下 rabbitmq 上的监控即可知道流程是否⾛通了.1.4. 安装集群 canal1.4.1. 安装 canal-admin1.4.1.1. 下载安装并解压缩sudo wget https:///alibaba/canal/releases/download/canal-1.1.5-alpha-1/canal.admin-1.1.5-SNAPSHOT.tar.gzsudo tar -zxvf canal.admin-1.1.5-SNAPSHOT.tar.gz1.4.1.2. 配置⽂件application.ymlserver:port: 8089spring:jackson:date-format: yyyy-MM-dd HH:mm:sstime-zone: GMT+8spring.datasource:address: 192.168.2.108:3306database: canal_managerusername: canalpassword: canaldriver-class-name: com.mysql.jdbc.Driver# 数据库连接字符串末尾需添加`serverTimezone=UTC`, 否则启动时会报时区异常;url: jdbc:mysql://${spring.datasource.address}/${spring.datasource.database}?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTChikari:maximum-pool-size: 30minimum-idle: 1canal:# 配置 canal-admin 的管理员账号和密码adminUser: adminadminPasswd: 123456canal_manager.sql在管理canal-admin数据的数据库中执⾏该 sql 脚本, 初始化⼀些表;1.4.1.3. 启动 canal-admin 服务Linux 对应的启动脚本./bin/startup.sh, Windows 对应的启动脚本./bin/startup.bat; 以 Windows 为例:λ .\startup.batstart cmd : java -Xms128m -Xmx512m -Djava.awt.headless=true .preferIPv4Stack=true -Dapplication.codeset=UTF-8 -Dfile.encoding=UTF-8 -DappName=canal-admin -classpath "D:\env\green\canal-1.1.5-admin\bin\\..\conf\..\lib\*;D:\env\green\canal-2020-04-13 20:01:39.495 [main] INFO com.alibaba.otter.canal.admin.CanalAdminApplication - Starting CanalAdminApplication on Memento-PC with PID 50696 (D:\env\green\canal-1.1.5-admin\lib\canal-admin-server-1.1.5-SNAPSHOT.jar started by Memento in 2020-04-13 20:01:39.527 [main] INFO com.alibaba.otter.canal.admin.CanalAdminApplication - No active profile set, falling back to default profiles: default2020-04-13 20:01:39.566 [main] INFO o.s.b.w.s.c.AnnotationConfigServletWebServerApplicationContext - Refreshing org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@13a5bf6: startup date [Mon Apr 13 20:01 2020-04-13 20:01:41.149 [main] INFO o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8089 (http)2020-04-13 20:01:41.166 [main] INFO org.apache.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-8089"]2020-04-13 20:01:41.176 [main] INFO org.apache.catalina.core.StandardService - Starting service [Tomcat]2020-04-13 20:01:41.177 [main] INFO org.apache.catalina.core.StandardEngine - Starting Servlet Engine: Apache Tomcat/8.5.29...2020-04-13 20:01:42.996 [main] INFO org.apache.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-8089"]2020-04-13 20:01:43.007 [main] INFO .NioSelectorPool - Using a shared selector for servlet write/read2020-04-13 20:01:43.019 [main] INFO o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat started on port(s): 8089 (http) with context path ''2020-04-13 20:01:43.024 [main] INFO com.alibaba.otter.canal.admin.CanalAdminApplication - Started CanalAdminApplication in 3.919 seconds (JVM running for 5.241)1.4.1.4. 注意事项canal-admin连接数据库的账号, 必须有建表, 读写数据的权限, 如果还是采⽤上⽂中创建的canal账号, 需要另外扩展⼀下权限:GRANT ALL PRIVILEGES ON *.* TO 'canal'@'%' ;1.4.2. 添加单机 canal-server 节点1.4.2.1. 启动 canal-server 节点服务单机 canal-server 照常启动, 此时, canal-server 默认加载的../conf/canal.properties⾥的配置信息, 可以从../bin/startup.bat[startup.sh]脚本中获悉, 获取从执⾏的脚本命令提⽰⾥获悉;1.4.2.2. 新建单机 server在canal-admin中新建⼀个单机server该server会⾃动识别已启动的canal-server节点, 但是此时由admin接管后, 不会⾃动加载../conf/canal.properties的配置⽂件, 点击最右侧的操作-配置查看, 该 server 加载的是默认的配置信息需要⼿动将1.3.2中配置好的../conf/canal.properties⾥的配置信息拷贝到该配置⾥进⾏覆盖!1.4.2.3. 新建实例 instance⼿动在canal-admin中新建⼀个instance, 对应单机canal-server配置下的实例example2; 同样, 需要⼿动将./conf/<实例名称>/instance.properies配置⽂件⼿动拷贝到 admin 中!!注意在新建或启动instance实例时, 先删除实例⽂件夹下的meta.dat⽂件, 并更新=..., canal.instance.master.position=...两个配置项;1.4.3. 添加集群 canal-server 节点1.4.3.1. 新建集群需要指定集群名称, 以及配置集群绑定的zookeeper集群地址;新建成功后, 在最右侧的操作-主配置中配置集群的通⽤ server 配置信息此处也可以将之前配置的../conf/canal.properties配置直接拷贝过来, 稍微修改⼀下就可以⽤了# canal admin configcanal.admin.manager = 192.168.2.108:8089canal.instance.global.mode = manager1.4.3.2. 新建 server指定所属集群, 为1.4.3.1中设定的集群名称;如果先前已经启动了canal-server节点服务, 则新建的 server 会⾃动识别为启动状态, 否则为断开状态;这⾥有⼀点需要⼗分注意的地⽅细⼼的⼈可能会发现, 除了canal.properties配置⽂件, 还有⼀个canal_local.properties的配置⽂件, 后者⽐前者的内容少了很多, 因为这个⽂件就是⽤于搭建canal集群时, 本地节点的配置⽂件, ⽽前者配置⽂件⾥的其他信息都是交由canal-admin集中配置管理的;在./bin/startup.bat[startup.sh]启动脚本⾥, 默认是加载canal.properties配置⽂件, 即以单机形式启动的服务;windows 在搭建canal集群时, 需要⼿动修改startup.bat, 蓝⾊标注处是加载%canal_conf%变量的配置⽂件路径, 所以需要将红⾊框内的变量调整为:@rem set canal_conf=...set canal_conf=%conf_dir%\canal_local.properties使启动时加载canal_local.properties的配置⽂件1.4.3.3. 新建 instance此处配置也可以基于单机 server 中的实例1.4.2.3配置进⾏调整使⽤;# 2. position info, 指定 mysql 开始同步的 binlog 位置信息canal.instance.master.address=192.168.0.25:63306=mysql-bin.001349canal.instance.master.position=198213313# 3. username/password, 设置同步 mysql 的数据库⽤户名和密码canal.instance.dbUsername=xxxxcanal.instance.dbPassword=xxx# 4. table regex, 正则匹配需要同步的数据表canal.instance.filter.regex=xxxx# 5. mq config, 指定 mysql 上的路由绑定, 见 `1.2.3`canal.mq.topic=example2-routingkey保存后即可在操作中启动该实例后话如果此处的 instance ⽆法启动, 按⼀下⼏个步骤检查操作⼀下试试:检查集群⾥的主配置⾥的canal.destinations是否包含新建的实例instance名称;检查canal-server节点是否加载的canal_local.properties配置⽂件;删除实例⽂件夹下的.db, .bat⽂件, 更新实例配置⽂件中的canal.instance.master.position的binglog位置后, 启动instance;1.5. canal 配置说明1.5.1. canal.properties1. canal.ip, 该节点 IP2. canal.register.ip, 注册到 zookeeper 上的 IP3. canal.zkServers, zk 集群4. 是否启⽤ tsdb, 开启 table meta 的时间序列版本记录功能5. // 5. canal.serverMode, 设置为 rabbitmq, 默认为 tcpcanal.instance.tsdb.enable = truecanal.instance.tsdb.dir = ${canal.file.data.dir:../conf}/${canal.instance.destination:}canal.instance.tsdb.url = jdbc:h2:${canal.instance.tsdb.dir}/h2;CACHE_SIZE=1000;MODE=MYSQL;canal.instance.tsdb.dbUsername = canalcanal.instance.tsdb.dbPassword = canal5.canal.destinations, 当前集群上部署的 instance 列表6.canal.mq.servers, 设置 Rabbitmq 集群地址, !! 此处不可以加上端⼝1.5.2. instance.properties1. canal.instance.master.address, master 数据库地址2. , 在数据库中执⾏show master status的File值3. canal.instance.master.position, 在数据库中执⾏show master status的Position值4. canal.instance.tsdb.enable=false, 禁⽤ tsdb5. canal.instance.dbUsername, 实例数据库⽤户名6. canal.instance.dbPassword, 实例数据库密码7. canal.instance.filter.regex, 匹配需要同步的表8. canal.mq.topic, canal 注册 mq 的 topic 名称1.5.3. properties 配置⽂件properties配置分为两部分canal.properties (系统根配置⽂件)instance.properties (instance 级别的配置⽂件, 每个实例⼀份)1.canal.propertiescanal.destinations # 当前 server 上部署的 instance 列表canal.conf.dir # conf ⽬录所在路径canal.auto.scan # 开启 instance ⾃动扫描# 如果配置为 true, canal.conf.dir ⽬录下的 instance 配置变化会⾃动触发# 1. instance ⽬录新增: 触发 instance 配置载⼊, lazy 为 true 时则⾃动启动;# 2. instance ⽬录删除: 卸载对应 instance 配置, 如已启动则进⾏关闭;# 3. instance.properties ⽂件变化: reload instance 配置, 如已启动则⾃动进⾏重启操作;canal.auto.scan.interval # instance ⾃动扫描间隔时间, 单位 scanal.instance.global.mode # 全局配置加载⽅式zy # 全局 lazy 模式canal.instance.global.manager.address # 全局的 manager 配置⽅式的链接信息canal.instance.global.spring.xml # 全局的 spring 配置⽅式的组件⽂件canal.instance.example.modezycanal.instance.example.spring.xml# instance 级别的配置定义, 如有配置, 会⾃动覆盖全局配置定义模式canal.instance.tsdb.enable # 是否开启 table meta 的时间序列版本记录功能canal.instance.tsdb.dir # 时间序列版本的本地存储路径, 默认为 instance ⽬录canal.instance.tsdb.url # 时间序列版本的数据库连接地址, 默认为本地嵌⼊式数据库canal.instance.tsdb.dbUsername # 时间序列版本的数据库连接账号canal.instance.tsdb.dbPassword # 时间序列版本的数据库连接密码2.instance.propertiescanal.id # 每个 canal server 实例的唯⼀标识canal.ip # canal server 绑定的本地 IP 信息, 如果不配置, 默认选择⼀个本机 IP 进⾏启动服务canal.port # canal server 提供 socket 服务的端⼝canal.zkServers # canal server 连接 zookeeper 集群的连接地址, 例如: 10.20.144.22:2181,10.20.144.23:2181canal.zookeeper.flush.period # canal 持久化数据到 zookeeper 上的更新频率, 单位 mscanal.instance.memory.batch.mode # canal 内存 store 中数据缓存模式# 1. ITEMSIZE: 根据 buffer.size 进⾏限制, 只限制记录的数量# 2. MEMSIZE: 根据 buffer.size * buffer.memunit 的⼤⼩, 限制缓存记录的⼤⼩;canal.instance.memory.buffer.size # canal 内存 store 中可缓存 buffer 记录数, 需要为 2 的指数canal.instance.memory.buffer.memunit # 内存记录的单位⼤⼩, 默认为 1KB, 和 buffer.size 组合决定最终的内存使⽤⼤⼩canal.instance.transactions.size # 最⼤事务完整解析的长度⽀持, 超过该长度后, ⼀个事务可能会被拆分成多次提交到 canal store 中, ⽆法保证事务的完整可见性canal.instance.fallbackIntervalInSeconds # canal 发⽣ mysql 切换时, 在新的 mysql 库上查找 binlog 时需要往前查找的时间, 单位 s# 说明: mysql 主备库可能存在解析延迟或者时钟不⼀致, 需要回退⼀段时间, 保证数据不丢canal.instance.detecting.enable # 是否开启⼼跳检查canal.instance.detecting.sql # ⼼跳检查 sql, insert into retl.xdual values(1,now()) on duplicate key update x=now()canal.instance.detecting.interval.time # ⼼跳检查频率, 单位 scanal.instance.detecting.retry.threshold # ⼼跳检查失败重试次数canal.instance.detecting.heatbeatHaEnable # ⼼跳检查失败后, 是否开启 mysql ⾃动切换# 说明: ⽐如⼼跳检查失败超过阈值后, 如果该配置为 true, canal 会⾃动连到 mysql 备库获取 binlog 数据work.receiveBufferSize # ⽹络连接参数, SocketOptions.SO_RCVBUFwork.sendBufferSize # ⽹络连接参数, SocketOptions.SO_SNDBUFwork.soTimeout # ⽹络连接参数, SocketOptions.SO_TIMEOUT1.5.4. canal.mq.dynamicTopic1.6. 问题处理1.windows 下执⾏startup.bat启动 canal 时, 出现如下异常Failed to instantiate [ch.qos.logback.classic.LoggerContext]Reported exception:ch.qos.logback.core.LogbackException: Unexpected filename extension of file [file:/D:/env/green/canal/conf/]. Should be either .groovy or .xmlat ch.qos.logback.classic.util.ContextInitializer.configureByResource(ContextInitializer.java:79)at ch.qos.logback.classic.util.ContextInitializer.autoConfig(ContextInitializer.java:152)at org.slf4j.impl.StaticLoggerBinder.init(StaticLoggerBinder.java:85)at org.slf4j.impl.StaticLoggerBinder.<clinit>(StaticLoggerBinder.java:55)at org.slf4j.LoggerFactory.bind(LoggerFactory.java:141)at org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:120)at org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:331)at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:283)at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:304)at com.alibaba.otter.canal.deployer.CanalLauncher.<clinit>(CanalLauncher.java:29)解决⽅法:将startup.bat⾥的⼀下这⾏代码注释打开@rem set logback_configurationFile=%conf_dir%\logback.xml注, 新版1.1.5不存在该问题, 1.1.5这个⽂件中的这⼀⾏是没有注释掉的.1.1.5新版本canal-admin启动时出现如下异常:2020-04-10 18:55:40.406 [main] ERROR com.zaxxer.hikari.pool.HikariPool - HikariPool-1 - Exception during pool initialization.java.sql.SQLException: The server time zone value '�й��� ʱ��' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.解决⽅法spring.datasource.url配置的 mysql 连接地址后⾯加上参数&serverTimezone=UTCInstance⽇志⾥出现异常errno = 1236, sqlstate = HY000 errmsg = log event entry exceeded max_allowed_packet;2020-04-13 13:06:09.507 [destination = example3 , address = /192.168.2.108:3306 , EventParser] ERROR mon.alarm.LogAlarmHandler -destination:example3[java.io.IOException: Received error packet: errno = 1236, sqlstate = HY000 errmsg = log event entry exceeded max_allowed_packet; Increase max_allowed_packet on master; the first event 'mysql-5.7' at 671745, the last event read from 'D:\env\mysql-5.7' at 673181, the last byte read from 'D:\env\mysql-5.7' at 673200.at com.alibaba.otter.canal.parse.inbound.mysql.dbsync.DirectLogFetcher.fetch(DirectLogFetcher.java:102)at com.alibaba.otter.canal.parse.inbound.mysql.MysqlConnection.dump(MysqlConnection.java:235)at com.alibaba.otter.canal.parse.inbound.AbstractEventParser$3.run(AbstractEventParser.java:265)at ng.Thread.run(Unknown Source)]解决⽅法删除canal/conf下对应实例⾥的meta.dat⽂件, 让canal-admin⾃动再⽣成即可;1.7. 参考资料到此这篇关于mysql-canal-rabbitmq 安装部署超详细教程的⽂章就介绍到这了,更多相关mysql-canal-rabbitmq 安装部署内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!。

Rabbitmq安装启动

Rabbitmq安装启动

Rabbitmq安装启动安装socat[root@Aliyun software]# yum -y install epel-release[root@Aliyun software]# yum -y install socat安装rabbit的rpm包[root@Aliyun resource]# rpm -ivh rabbitmq-server-3.7.7-1.el6.noarch.rpmrabbitmq安装成功了,但是如果需要对外访问使⽤,开启远程登录⽤户的权限,默认只允 localhostweb管理应⽤访问端⼝是 15672程序(⽣产者,消费者客户端程序)访问端⼝5672配置远程连接权限,配置⽤户登录权限,需要⼀个rabbitmq.config的配置⽂件,放到/etc/rabbitmq⽬录中模板⽂件直接修改保存即可,/usr/share/doc/rabbitmq-server-3.7.7/rabbitmq.config.example将其拷贝到/etc/rabbitmq下,改名rabbitmq.config[root@Aliyun ~]# cp /usr/share/doc/rabbitmq-server-3.7.7/rabbitmq.config.example /etc/rabbitmq/rabbitmq.config打开⽂件修改[root@Aliyun ~]# cd /etc/rabbitmq/[root@Aliyun ~]# vim rabbitmq.config61⾏(3.6.1是64⾏)%% {loopback_users, []},修改1:去掉前⾯的两个%%,修改2:去掉最后⾯的逗号,保存。

修改结果如下:{loopback_users, []}开启后台管理插件(启动web应⽤,可以通过应⽤操作rabbitmq,查看监控)执⾏下⾯命令,开启web界⾯管理⼯具[root@Aliyun rabbitmq]# rabbitmq-plugins enable rabbitmq_management如上图界⾯,即为开启成功。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

目录
安装erlang (1)
安装rabbitmq-server-3.0.0-1 (1)
rabbit集群 (2)
RabbitMQ集群方案 (3)
Rabbitmq插件 (4)
安装环境Centos 6.2 2.6.32-220.4.1.el6.x86_64
安装软件rabbitmq-server-3.0.0-1
安装erlang
添加yum erlang扩展源
epel-release-6-5.noarch.rpm
rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm
可以在这里搜索rpm包/
安装扩展源后直接yum安装erlang
yum install erlang
如果安装未成功请先安装python
yum groupinstall Base*
安装rabbitmq-server-3.0.0-1
rabbitmq扩展源安装
rpm --import /rabbitmq-signing-key-public.asc
安装扩展源后直接yum安装rabbitmq
yum install rabbitmq-server-3.0.0-1.noarch.rpm
启动rabbitmq
/etc/init.d/rabbitmq-server start
如果启动未成功你可以看下是否rabbitmq端口给占用,rabbitmq用到端口为5672、15672
如果端口未给占用请检测hosts文件
检查主机名是否一致
rabbit集群
在master上把服务器rabbitmq-1加入集群rabbitmqctl stop_app
rabbitmqctl join_cluster --ram rabbit@rabbitmq-1 rabbitmqctl start_app
查看下状态rabbitmqctl cluster_status
master为disc
rabbitmq-1为ram
把rabbitmq-1修改为disc
查看下状态
RabbitMQ集群方案
这些都和RabbitMQ的队列模式有关:
为直观起见,流程简化为单链接,中间为RabbitMQ节点,上方为publisher,下方
为consumer。

单一模式:最简单的情况,非集群模式。

没什么好说的。

普通模式:默认的集群模式。

对于Queue来说,消息实体只存在于其中一个节点,A、B两个节点仅有相同的元数据,即队列结构。

当消息进入A节点的Queue中后,consumer从B节点拉取时,RabbitMQ会临时在A、B间进行消息传输,把A中的消息实体取出并经过B发送给consumer。

所以consumer应尽量连接每一个节点,从中取消息。

即对于同一个逻辑队列,要在多个节点建立物理Queue。

否则无论consumer连A或B,出口总在A,会产生瓶颈。

该模式存在一个问题就是当A节点故障后,B节点无法取到A节点中还未消费的消息实体。

如果做了消息持久化,那么得等A节点恢复,然后才可被消费;如果没有持久化的话,然后就没有然后了……
镜像模式:把需要的队列做成镜像队列,存在于多个节点,属于RabbitMQ的HA方案。

该模式解决了上述问题,其实质和普通模式不同之处在于,消息实体会主动在镜像节点间同步,而不是在consumer取数据时临时拉取。

该模式带来的副作用也很明显,除了降低系统性能外,如果镜像队列数量过多,加之大量的消息进入,集群内部的网络带宽将会被这种同步通讯大大消耗掉。

所以在对可靠性要求较高的场合中适用。

Rabbitmq插件
wget /opensourceprojects/RabbitMQ/rabbithub.ez rabbitmq-plugins list
rabbitmq-plugins enable rabbithub
/etc/init.d/rabbitmq-server restart
wget
/downloads/jbrisbin/rabbitmq-webhooks/rabbitmq-webhooks-0.15.tar.gz
tar zxvf rabbitmq-webhooks-0.15.tar.gz
cp *.ez /usr/lib/rabbitmq/lib/rabbitmq_server-3.0.0/plugins/
rabbitmq-plugins enable rabbit_webhooks
/etc/init.d/rabbitmq-server restart。

相关文档
最新文档