一、RabbitMQ安装和运行
1、在Linux中安装RabbitMQ演示
##在Linux中安装RabbitMQ演示,以VirtualBox中的虚拟机为操作系统载体
##操作系统版本为CentOS7,纯净未安装RabbitMQ
#以root用户安装
su - root
##安装
wget https://packages.erlang-solutions.com/erlang-solutions-1.0-1.noarch.rpm
rpm -Uvh erlang-solutions-1.0-1.noarch.rpm
yum install epel-release
yum install erlang
wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.6/rabbitmq-server-3.6.6-1.el7.noarch.rpm
yum install rabbitmq-server-3.6.6-1.el7.noarch.rpm
##管理
service rabbitmq-server start
service rabbitmq-server status
#安装管理控制台
rabbitmq-plugins enable rabbitmq_management
#重启RabbitMQ
service rabbitmq-server stop
service rabbitmq-server start
#可在虚拟机浏览器中检查能否访问管理控制台
#开启相对应的端口
firewall-cmd --permanent --add-port=15672/tcp
firewall-cmd --permanent --add-port=5672/tcp
#查看已有虚拟主机并增加名为enjoyedu的虚拟主机
rabbitmqctl list_vhosts
rabbitmqctl add_vhost chj_vhost
rabbitmqctl list_vhosts
#增加名为mark的用户并配置administrator角色,增加相应的权限
rabbitmqctl add_user chj 123456
rabbitmqctl set_permissions -p chj_vhost chj '.*' '.*' '.*'
rabbitmqctl set_user_tags chj administrator
#如需在本地机器中访问,需要在虚拟机中配置端口转发
#在本地浏览器中检查能否访问管理控制台并运行代码测试
#注意:系统缺省的guest用户是不能进行远程登录的,除非另行配置相关参数
备注:
在 Linux(以 CentOS7 为例)下安装 RabbitMQ
1、wget https://packages.erlang-solutions.com/erlang-solutions-1.0-1.noarch.rpm
2、rpm -Uvh erlang-solutions-1.0-1.noarch.rpm
3、yum install epel-release4、yum install erlang
5 wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.6/rabbitmq-server-3.6.6-1.el7.noarch.rpm
6、yum install rabbitmq-server-3.6.6-1.el7.noarch.rpm
注意:常用命令
rabbitmqctl add_user <username> <password>
rabbitmqctl delete_user <username>
修改密码:
rabbitmqctl change_password <username> <newpassword>
rabbitmqctl clear_password <username>
添加交换器:
rabbitmqctl add_vhost chj-vhost
rabbitmqctl delete_vhost chj-vhost
查看:
rabbitmqctl list_vhosts list_vhosts
设置用户权限:
rabbitmqctl set_permissions [-p <vhostpath>] <user> <conf> <write> <read>
例如:rabbitmqctl set_permissions -p chj_vhost chj '.*' '.*' '.*'
rabbitmqctl clear_permissions [-p <vhostpath>] <username>
查看权限:
rabbitmqctl list_permissions -p chj_vhost
rabbitmqctl list_user_permissions <username>
2、在Linux中卸载RabbitMQ
/sbin/service rabbitmq-server stop
yum list | grep rabbitmq
yum -y remove rabbitmq-server.noarch
yum list | grep erlang
yum -y remove erlang-*
yum remove erlang.x86_64
rm -rf /usr/lib64/erlang
rm -rf /var/lib/rabbitmq
yum remove epel-release
rm -rf /var/cache/yum/x86_64/6/epel/
3、RabbitMQ 常用端口
client 端通信端口: 5672
管理端口 : 15672
server 间内部通信端口: 25672
4、可能的问题
如端口出现不能访问,考虑是否防火墙问题,可以使用形如以下命令开启或直接关闭防火墙:
firewall-cmd --add-port=15672/tcp --permanent
运行 rabbitmqctl status出现Error: unable to connect to node rabbit@controller: nodedown之类问题考虑如下几种解决办法:
1、重启服务
service rabbitmq-server stop
service rabbitmq-server start
2、检查/var/lib/rabbitmq中是否存在.erlang.cookie,没有则新建一个,里面随便输入一段字符串
3、重新安装服务
4、百度或者Google一下
二、原生 Java 客户端进行消息通信
1、Direct交换器
参见代码 native 模块包 com.chj.exchange.direct 中:
DirectProducer:direct 类型交换器的生产者
NormalConsumer:普通的消费者
MulitBindConsumer:队列绑定到交换器上时,是允许绑定多个路由键的,也就是多重绑定
MulitChannelConsumer:一个连接下允许有多个信道
MulitConsumerOneQueue:一个队列多个消费者,则会表现出消息在消费者之间的轮询发送。
1.1、生产者和消费者一般用法
DirectProducer:direct 类型交换器的生产者。
NormalConsumer:普通的消费者。
使用 DirectProducer作为生产者,NormalConsumer作为消费者,消费者绑定一个队列。