1. RabbitMQ介绍
1.1 RabbitMQ关键特性
-
异步消息传递:允许应用程序在不直接进行网络调用的情况下交换消息。
-
可靠性:支持消息持久化,确保消息不会在系统故障时丢失。
-
灵活的路由:支持多种路由选项,包括直接、主题、扇出和头插交换机。
-
集群支持:可以跨多个服务器运行,以提高可用性和可伸缩性。
-
高可用性:通过镜像队列和故障转移机制,确保消息传递的高可用性。
-
多种协议支持:支持 AMQP 0-9-1、0-8、0-10,以及 STOMP、MQTT、HTTP 等。
-
多种语言客户端库:提供多种编程语言的客户端库,如 Java、.NET、Ruby、Python、PHP、JavaScript 等。
1.2 使用场景
- 解耦:将生产者和消费者解耦,使得它们可以独立地开发和部署。
- 扩展性:通过增加消费者的数量来处理更多的消息。
- 弹性:在消费者处理能力不足时,消息可以排队等待处理。
- 消息持久化:确保消息不会因为系统故障而丢失。
- 优先级消息:支持不同优先级的消息,使得重要消息可以优先处理。
1.3 与其他消息队列系统相比
-
与 Kafka 比较:Kafka 更注重高吞吐量的消息处理,适合用于大数据处理和日志聚合。而 RabbitMQ 提供了更丰富的消息路由功能和多种协议支持,适合需要复杂路由和多协议支持的场景 。
-
与 RocketMQ 比较:RocketMQ 也是高性能的分布式消息队列,但它更注重于延时消息和大规模消息处理。RabbitMQ 的社区支持和成熟度较高,适用于多种消息传递场景 。
-
与 ActiveMQ 比较:ActiveMQ 是 Apache 下的消息队列,与 RabbitMQ 相比,ActiveMQ 的社区活跃度和成熟度较低,但也是一个稳定的消息队列解决方案 。
2.安装依赖包
2.1 安装所需依赖包
yum install gcc glibc-devel make ncurses-devel openssl-devel xmlto
yum install fop.noarch
yum -y install ncurses-devel
yum -y install openssl-devel
yum -y install unixODBC-devel
yum -y install gcc-c++
yum install gtk2-devel.x86_64
yum -y install gtk2-devel binutils-devel
yum install mesa-libGL-devel mesa-libGLU-devel
yum install fop.noarch
2.2 安装 wxWidgets
wget https://netix.dl.sourceforge.net/project/wxwindows/3.0.1/wxWidgets-3.0.1.tar.bz2bzip2 -dkv wxWidgets-3.0.1.tar.bz2tar -xvf wxWidgets-3.0.1.tarcd wxWidgets-3.0.1/./configure --with-opengl --enable-debug --enable-unicodemake make install
3. 安装Erlang环境
3.1 Erlang包下载
wget -c http://erlang.org/download/otp_src_20.2.tar.gz
3.2 编译安装
tar -zxvf otp_src_20.2.tar.gz
cd otp_src_20.2/#出现no java compile found 加入--without-javac./configure --prefix=/usr/local/erlang --without-javac
make
make install
3.3 测试是否成功安装
cd /usr/local/erlang/bin/
./erl
halt(). #成功后退出
3.4 配置环境变量
#将 /usr/local/erlang/bin 加到后面,用:隔开
vi /root/.bash_profile
PATH=$PATH:$HOME/bin:/usr/local/erlang/bin
#重启
source /root/.bash_profile
4. RabbitMQ安装
4.1 下载最新安装包
wget -c http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.15/rabbitmq-server-generic-unixxz-3.6.15.tar.xz
4.2 编译安装
xz -d rabbitmq-server-generic-unix-3.6.15.tar.xz
tar -xvf rabbitmq-server-generic-unix-3.6.15.tar
cp -r ./rabbitmq_server-3.6.15 /usr/local/rabbitmpServer
4.3 加入环境变量
export PATH=$PATH:/usr/local/rabbitmq_server-3.6.15/sbin
4.4 rabbitmq操作指令
启动:rabbitmq-server -detached
关闭:rabbitmqctl stop
状态:rabbitmqctl status
4.5 开机启动
在/etc/init.d 目录下新建一个 rabbitmq
#!/bin/bash
#
# chkconfig: 2345 80 05
# description: rabbitmq
# processname: rabbitmq#RabbitMQ安装目录
RABBITMQ_HOME=/usr/local/rabbitmpServer
export RABBITMQ_HOMEcase "$1" instart)echo "Starting RabbitMQ ..."cd $RABBIT_HOME/sbinrabbitmq-server;;
stop)echo "Stopping RabbitMQ ..."cd $RABBIT_HOME/sbinrabbitmqctl stop;;
status)echo "Status RabbitMQ ..."cd $RABBIT_HOME/sbinrabbitmqctl status;;
restart)echo "Restarting RabbitMQ ..."cd $RABBIT_HOME/sbinrabbitmq-server;;*)echo "Usage: $prog {start|stop|status|restart}";;
esac
exit 0
4.6 配置rabbitmq网页管理插件
默认来宾用户:guest, 来宾用户密码:guest
rabbitmq-plugins enable rabbitmq_management
http://192.168.?.?:15672 端口默认为15672
5. rabbitmq常用命令
查看状态
查看节点状态:rabbitmqctl status
查看节点详细信息:rabbitmqctl status -p
管理用户
添加用户:rabbitmqctl add_user username password
删除用户:rabbitmqctl delete_user username
设置用户权限:rabbitmqctl set_permissions -p vhost user "configure,write,read"
查看用户列表:rabbitmqctl list_users
管理队列
查看所有队列:rabbitmqctl list_queues
查看队列详细信息:rabbitmqctl list_queues -p vhost_name
删除队列:rabbitmqctl delete_queue vhost_name queue_name
清除队列消息:rabbitmqctl purge_queue vhost_name queue_name
管理权限
设置用户权限:rabbitmqctl set_permissions -p vhost user "configure,write,read" "resource"
查看用户权限:rabbitmqctl list_user_permissions user
管理交换器
查看所有交换器:rabbitmqctl list_exchanges
查看交换器详细信息:rabbitmqctl list_exchanges -p vhost_name
删除交换器:rabbitmqctl delete_exchange vhost_name exchange_name
管理绑定
查看绑定:rabbitmqctl list_bindings
查看特定交换器的绑定:rabbitmqctl list_bindings -p vhost_name e exchange_name
插件管理
启用插件:rabbitmq-plugins enable plugin_name
禁用插件:rabbitmq-plugins disable plugin_name
查看已启用的插件:rabbitmq-plugins list
6.最后
感谢大家,请大家多多支持!