• RabbitMQ安装与简单使用


    安装

    下载资源

    可以访问官网查看下载信息rabbitmq官网
    在这里插入图片描述
    选择合适的版本,注意:rabbitmq需要下载一个Erlang才能使用
    我自己是在一下两个连接中下载的
    rabbitmq 3.8.8
    erlang 21.3.8.15
    需要下载其他版本的同学注意erlang版本是否匹配,可以访问该链接查询匹配信息版本匹配信息
    在这里插入图片描述

    安装以及启动rabbitmq

    1. 对erlang进行安装
      rpm -ivh erlang-21.3.8.15-1.el7.x86_64.rpm
      
      • 1

      在这里插入图片描述

    2. 下载以下插件
      yum install socat -y
      
      • 1

      在这里插入图片描述

    3. 安装rabbitmq
      rpm -ivh rabbitmq-server-3.8.8-1.el7.noarch.rpm
      
      • 1

      在这里插入图片描述

    4. 启动程序
      /sbin/service rabbitmq-server start
      
      • 1

      在这里插入图片描述

    5. 暂停程序以及查看状态
      /sbin/service rabbitmq-server stop
      /sbin/service rabbitmq-server status
      
      • 1
      • 2

      在这里插入图片描述

    访问mq

    访问web界面

    程序启动成功以后,可以下载一个插件,用于访问web界面

    rabbitmq-plugins enable rabbitmq_management
    
    • 1

    在这里插入图片描述
    注意:下载插件是需要先关闭程序再下载

    访问如下地址

    运行有mq的服务器的地址:15672
    
    • 1

    访问成功界面如下:
    在这里插入图片描述

    用户管理

    使用内置用户登录时(用户名:guest 密码:guest)无法登录。
    原因:该用户没用权限。
    解决方法:

    1. 修改该用户权限
    2. 创建一个新用户,并赋予权限
      在这里插入图片描述
      下面讲解如何创建用户,并赋权
    • 获取用户信息
      rabbitmqctl list_users
      
      • 1

      在这里插入图片描述

    • 创建用户,并设置密码
      rabbitmqctl add_user admin root
      
      • 1

      在这里插入图片描述

    • 分配角色
      rabbitmqctl set_user_tags admin administrator
      
      • 1

      在这里插入图片描述

    • 赋予权限
      rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"
      
      • 1

      在这里插入图片描述

    成功登录后,界面如下:
    在这里插入图片描述

    简单使用

    1. 创建一个maven项目,并导入以下依赖:
      
              <dependency>
                  <groupId>com.rabbitmqgroupId>
                  <artifactId>amqp-clientartifactId>
                  <version>5.8.0version>
              dependency>
      
      
              <dependency>
                  <groupId>commons-iogroupId>
                  <artifactId>commons-ioartifactId>
                  <version>2.6version>
              dependency>
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
    2. 编写生产者代码:
      public class Producer {
      
          //队列名称
          public static final String QUEUE_NAME = "hello";
      
          //发消息
          public static void main(String[] args) throws Exception{
              //创建工厂
              ConnectionFactory factory = new ConnectionFactory();
              //工厂IP 连接RabbitMQ的队列
              factory.setHost("192.168.221.128");
              //用户名
              factory.setUsername("admin");
              //密码
              factory.setPassword("root");
      
              //创建连接
              Connection connection = factory.newConnection();
              //获取信道
              Channel channel = connection.createChannel();
              /**
               * 生成一个队列
               * 1. 队列名称
               * 2. 队列里面的消息是否持久化(磁盘),默认情况下消息存储在内存中
               * 3. 该队列是否只供一个消费者进行消费 是否进行消费共享,true:可以多个消费者    false:只能一个消费者使用
               * 4. 是否自动删除 最后一个消费者断开连接以后 给队列是否自动删除 true自动删除 false不自动删除
               * 5. 其他参数
               */
              channel.queueDeclare(QUEUE_NAME, false, false, false, null);
      
              //发消息
              String massage = "hello world";
      
              /**
               *  发送一个消息
               *  1. 发送到哪个交换机
               *  2. 路由的Key值是哪个 本次是队列的名称
               *  3. 其它参数信息
               *  4. 发送消息的消息体
               */
              channel.basicPublish("", QUEUE_NAME, null, massage.getBytes());
              System.out.println("消息发送完毕");
          }
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21
      • 22
      • 23
      • 24
      • 25
      • 26
      • 27
      • 28
      • 29
      • 30
      • 31
      • 32
      • 33
      • 34
      • 35
      • 36
      • 37
      • 38
      • 39
      • 40
      • 41
      • 42
      • 43
      • 44
    3. 编写消费者代码
      public class Consumer {
      
          //队列名称
          public static final String QUEUE_NAME = "hello";
      
          //接收消息
          public static void main(String[] args) throws Exception{
              //创建连接工厂
              ConnectionFactory factory = new ConnectionFactory();
              //工厂IP 连接RabbitMQ的队列
              factory.setHost("192.168.221.128");
              //用户名
              factory.setUsername("admin");
              //密码
              factory.setPassword("root");
      
              Connection connection = factory.newConnection();
      
              Channel channel = connection.createChannel();
      
              //回调 接收消息
              DeliverCallback deliverCallback = (consumerTag, message) -> {
                  System.out.println(new String(message.getBody()));
              };
      
              //回调 取消消息
              CancelCallback cancelCallback = consumerTag -> {
                  System.out.println("消息消费被中断");
              };
      
              /**
               * 消费者 消费信息
               * 1. 消费哪个队列
               * 2. 消费成功以后是否要自动应答 true代表自动应答 false代表手动应答
               * 3. 消费者未成功消费的回调
               * 4. 消费者取消消费的回调
               */
              channel.basicConsume(QUEUE_NAME, true, deliverCallback, cancelCallback);
          }
      }
      
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21
      • 22
      • 23
      • 24
      • 25
      • 26
      • 27
      • 28
      • 29
      • 30
      • 31
      • 32
      • 33
      • 34
      • 35
      • 36
      • 37
      • 38
      • 39
      • 40
      • 41
  • 相关阅读:
    DCloud之APP离线SDK升级步骤(3.5.3升至最新版3.6.7.81556_20221018)
    nodejs微信小程序-客户管理管理系统的设计与实现-安卓-python-PHP-计算机毕业设计推荐
    使用 Learner Lab - 使用 Lambda 转换图片为 base64 格式
    时间轴_显示器
    商品大类C
    (附源码)springboot高校宿舍交电费系统 毕业设计031552
    LCR 157. 套餐内商品的排列顺序
    【网络工程】3、交换机原理
    解决动态菜单router的index配置,以及第二次传参未响应情况
    Java面试笔记:Java线程安全的集合类有哪些?线程不安全的集合类有哪些?ArrayList为什么会发生并发修改异常?
  • 原文地址:https://blog.csdn.net/kukudeYSB/article/details/133521687