1.用户角色配置

自带的guest/guest 超级管理员
五中不同角色配置:
- 普通管理者(management):仅可登陆管理控制台,无法看到节点信息,也无法对策略进行管理。
- 策略制定者(policymaker):可登陆管理控制台, 同时可以对policy进行管理。但无法查看节点的相关信息。
- 监控者 (monitoring):登录管理控制台 查看所有的信息(Rabbit的相关节点的信息,内存使用信息,磁盘的情况)
- 超级管理员 administrator:登录管理控制台 查看所有的信息 对所有用户的策略进行操作
- 其他:无法登陆管理控制台,通常就是普通的生产者和消费者(仅仅接收信息或者发送消息)。
2.Virtual Hosts配置
每一个 Virtual Hosts相互隔离, 就相当于一个相对独立的RabbitMQ,===> exchange queue message不是互通
可以理解为:一个Mysql又很多数据库,每一个数据库就相当于一个Virtual Hosts
2.1创建Virtual Hosts

2.2权限的分配
点击对应Virtual Hostsv 名字,进入配置页面


该权限配置参数说明:
- user:用户名
- configure :一个正则表达式,用户对符合该正则表达式的所有资源拥有 configure 操作的权限
- write:一个正则表达式,用户对符合该正则表达式的所有资源拥有 write 操作的权限
- read:一个正则表达式,用户对符合该正则表达式的所有资源拥有 read 操作的权限
3.入门案例
使用思路
生产者: --->按照JDBC思路
1. 创建连接工厂
2. 设置的rabbitMq的服务的主机 默认localhost
3. 设置的rabbitMq的服务的端口 默认5672
4. 设置的rabbitMq的服务的虚拟主机
5. 设置用户和密码
6. 创建连接
7. 创建频道
8. 声明队列
9. 创建消息
10. 发送消息
11.关闭资源
(观察者模式)
RabbitMQ 使用的是发布订阅模式

所需依赖
<dependency>
<groupId>com.rabbitmq</groupId>
<artifactId>amqp-client</artifactId>
<version>5.6.0</version>
</dependency>
对Rabbit的连接进行封装
public class RabbitMQConnectionUtils {
/**
* 获得Rabbit的连接
* 类比JDBC
*/
public static Connection getConection() throws IOException, TimeoutException {
//1.创建连接工厂
ConnectionFactory connectionFactory=new ConnectionFactory();
//2.设置的rabbitMq的服务的主机,默认localhost
connectionFactory.setHost("localhost");
//3.设置的rabbitMq的服务的端口,默认为5672
connectionFactory.setPort(5672);
//4.设置的rabbitMq的服务的虚拟主机
connectionFactory.setVirtualHost("testmq");
//5.设置用户和密码
connectionFactory.setUsername("chenbuting");
connectionFactory.setPassword("123");
//6.创建连接
Connection connection=connectionFactory.newConnection();
return connection;
}
}
基本消息队列
生产者Product相关代码
public class Product {
public static void main(String[] args) throws IOException, TimeoutException {
Connection connection=RabbitMQConnectionUtils.getConection();
//7.创建频道
Channel channel= connection.createChannel();
//8.声明队列(创建队列)
/*
* 参数1:指定队列的名称
* 参数2:指定消息是否持久化,一般设置为true,是否保存到磁盘当中去
* 参数3:指定是否独占通道
* 参数4:是否自动删除
* 参数5:指定额外参数
*/
channel.queueDeclare("simple_01",true,false,false,null);
//9.创建消息
String message="hello ,my name is chenbuting";
//10.发送消息
/*
* 参数1:指定交换机 简单模式中使用默认交换机 指定空字符串
* 参数2: 指定routingkey 简单模式 只需要指定队列名称即可
* 参数3: 指定携带的额外的参数 null
* 参数4:要发送的消息本身(字节数组)
*/
channel.basicPublish("","simple_01",null,message.getBytes());
//11.关闭资源
channel.close();
connection.close();
}
}
消费者Consumer相关代码
public class Consumer {
public static void main(String[] args) throws IOException, TimeoutException {
//获取连接
Connection connection= RabbitMQConnectionUtils.getConection();
//7.创建频道
Channel channel=connection.createChannel();
//8.声明队列
channel.queueDeclare("simple_01",true,false,false,null);
//9.接受消息
//处理消息
DefaultConsumer consumer = new DefaultConsumer(channel){
/*
*consumerTag: 消费者标签,用于标识特定的消费者。每个消费者都有一个唯一的标签,它可以用于取消订阅或标识消息是由哪个消费者处理的。
* envelope: 信封对象,包含与消息传递相关的元数据,如交换机、路由键、传递标签等。
* properties: AMQP 的基本属性,包含附加的消息属性,如消息持久性、优先级、时间戳等。
* body: 消息的正文,以字节数组的形式提供。
*/
@Override
public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperti

最低0.47元/天 解锁文章
2693

被折叠的 条评论
为什么被折叠?



