RabbitMQ基本配置

1.用户角色配置

自带的guest/guest 超级管理员

五中不同角色配置:

  1. 普通管理者(management):仅可登陆管理控制台,无法看到节点信息,也无法对策略进行管理。
  2. 策略制定者(policymaker):可登陆管理控制台, 同时可以对policy进行管理。但无法查看节点的相关信息。
  3. 监控者 (monitoring):登录管理控制台 查看所有的信息(Rabbit的相关节点的信息,内存使用信息,磁盘的情况)
  4. 超级管理员 administrator:登录管理控制台 查看所有的信息 对所有用户的策略进行操作
  5. 其他:无法登陆管理控制台,通常就是普通的生产者和消费者(仅仅接收信息或者发送消息)。

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陈步汀

我的房子靠你了

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值