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
    

    在这里插入图片描述

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

    在这里插入图片描述

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

    在这里插入图片描述

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

    在这里插入图片描述

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

    在这里插入图片描述

访问mq

访问web界面

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

rabbitmq-plugins enable rabbitmq_management

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

访问如下地址

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

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

用户管理

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

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

    在这里插入图片描述

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

    在这里插入图片描述

  • 分配角色
    rabbitmqctl set_user_tags admin administrator
    

    在这里插入图片描述

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

    在这里插入图片描述

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

简单使用

  1. 创建一个maven项目,并导入以下依赖:
    <!--        rabbitmq依赖客户端-->
            <dependency>
                <groupId>com.rabbitmq</groupId>
                <artifactId>amqp-client</artifactId>
                <version>5.8.0</version>
            </dependency>
    
    <!--        操作文件流的一个依赖-->
            <dependency>
                <groupId>commons-io</groupId>
                <artifactId>commons-io</artifactId>
                <version>2.6</version>
            </dependency>
    
  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("消息发送完毕");
        }
    }
    
  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);
        }
    }
    
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

kukudeYSB

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值