文章目录
消息队列【message quenen】
常见的消息队列中间件:ActiveMQ、RabbitMQ、Kafka、RocketMQ
RabbitMQ比kafka可靠,kafka更适合IO高吞吐的处理,一般用于大数据日志处理【ELK】或对可靠性、适时性要求低的场景
Rabbit主要的端口说明:
4369 – erlang发现口
5672 --client端通信口
15672 – 管理界面ui端口
25672 – server间内部通信口
编译安装RabbitMQ
RabbitMQ是用Erlang语言写的,因此需要现在Erlang的运行环境
RabbitMQ与Erlang的版本对应关系:https://www.rabbitmq.com/which-erlang.html
Erlang下载:https://www.rabbitmq.com/releases/erlang/
RabbitMQ下载:https://www.rabbitmq.com/install-rpm.html
安装步骤:
# 安装GCC、ncurses等依赖
yum -y install make ncurses-devel gcc gcc-c++ unixODBC unixODBC-devel openssl openssl-devel
yum -y install ncurses-devel
yum -y install socat
# 安装Erlang
#解压源码并进入目录
tar -zxvf otp_src_22.3.tar.gz
#进入解压后目录
cd otp_src_22.3/
#执行configure,生成Makefile文件
./configure --prefix=/usr/local/erlang \
--enable-smp-support \
--enable-threads \
--enable-sctp \
--enable-kernel-poll \
--enable-hipe \
--with-ssl
#参数说明
--prefix 指定安装目录
--enable-smp-support启用对称多处理支持
--enable-threads启用异步线程支持
--enable-sctp启用流控制协议支持(Stream Control Transmission Protocol,流控制传输协议)
--enable-kernel-poll启用Linux内核poll
--enable-hipe启用高性能Erlang
--with-ssl使用SSL包
#安装和编译命令:
make && make install
docker安装RabbitMQ
- 拉取RabbitMQ镜像
docker pull rabbitmq
- 创建需要挂载到容器的目录,并修改目录权限
mkdir -p /docker/rabbitmq/log
mkdir -p /docker/rabbitmq/etc
mkdir -p /docker/rabbitmq/data
# 修改目录权限
chmod -R 777 /docker/rabbitmq
- 安装rabbit容器
注意: shell 脚本的的换行符 “\” 前必须有一个空格,后不能有空格,否则报错
docker run --name rabbitmq \
-p 5672:5672 -p 15672:15672 \
-v /docker/rabbitmq/data:/var/lib/rabbitmq \
-v /docker/rabbitmq/etc:/etc/rabbitmq \
-v /docker/rabbitmq/log:/var/log/rabbitmq \
-e RABBITMQ_DEFAULT_VHOST=/ \
-e RABBITMQ_DEFAULT_USER=admin \
-e RABBITMQ_DEFAULT_PASS=123456nw \
-d 3e5ddca64bb7
- RABBITMQ_DEFAULT_VHOST:虚拟主机
- RABBITMQ_DEFAULT_USER: 用户名
- RABBITMQ_DEFAULT_PASS:密码
RabbitMQ常用插件的安装
容器内RabbitMq的插件都放置在/plugins目录下
容器内查看Rabbit已经自带了哪些插件,哪些插件已经启用:
rabbitmq-plugins list
web页面管理插件的安装
(1) 进入容器内安装rabbitmq的图像界面管理插件,任意目录直接执行安装指令即可
docker exec -it rabbitmq bash
rabbitmq-plugins enable rabbitmq_management
(2) 安装好以后,访问http://rabbitmq所在服务器ip:15672,进入管理界面.【如果没有指定用户名和密码,则默认用户为guest,默认密码为guest,进去以后可以修改密码】
RabbitMQ安装后无法访问15672端口,即需要安装管理插件,如果使用如下docker镜像即可不安装图形界面管理插件,因为默认已经安装了该插件
docker pull rabbitmq:management
(3)登录web管理界面
rabbitmq_delayed_message_exchange延迟队列插件的安装
(1)rabbitmq 插件下载(官网):https://www.rabbitmq.com/community-plugins.html【根据rabbitmq版本选择对应的插件,web管理页面首页可以查看rabbitmq版本】
(2)下载以ez为后缀的插件,容器可以通过挂载的容器数据卷,将插件放到容器内,将该插件放置到rabbitmq容器的plugins目录下
(3)开启rabbitmq_delayed_message_exchange插件
rabbitmq-plugins enable rabbitmq_delayed_message_exchange