第二章 RabbitMQ安装使用

本文详细介绍了RabbitMQ在Linux上的安装过程,包括安装、卸载、常用端口及可能遇到的问题。此外,还深入讲解了原生Java客户端如何利用Direct、Fanout和Topic交换器进行消息通信,探讨了消息发布时的各种权衡,如无保障、失败确认、MQ事务和发送方确认模式,以及备用交换器的使用方法。
摘要由CSDN通过智能技术生成

一、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

1wget https://packages.erlang-solutions.com/erlang-solutions-1.0-1.noarch.rpm

2rpm -Uvh erlang-solutions-1.0-1.noarch.rpm

3yum install epel-release4yum install erlang

5 wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.6/rabbitmq-server-3.6.6-1.el7.noarch.rpm

6yum 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作为消费者,消费者绑定一个队列。

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值