RabbitMQ快速上手

RabbitMQ 概述

RabbitMQ是一个实现了 AMQP 的消息队列服务,是当前主流的消息中间件

MQ的作用 :

工作:接收并转发消息

1.异步解耦

2.流量削峰

3.消息分发

4.延迟通知

RabbitMQ 默认管理端口号15672

操作RabbitMQ 三种方式

1.通过代码来操作 5672

2.通过界面来操作 15672

3.通过命令操作 Rabbitmqctl

黄色区域的六个标签就代表六种不同角色

虚拟机类似于mysql 的 dataBase

生产者与消费者模型

生产者 会发送消息 通过connection 连接 发送消息到RabbitMQ 服务器中,交换机 就会将接收到的消息 存放到消息队列 中,消费者 就会通过connectio n连接RabbitMQ 服务器 去消费 消息队列中存放的消息

**connection:**连接,是客户端与服务器通过TCP相连接的,这个连接是消息传递的基础,负责传输客户端与服务器之间的数据和控制信息

channel:信道,通道,它是基于connection TCP,一个TCP可以有多个channel,每个channel都是独立的 虚拟连接,消息的传递和接收都是基于channl

**virtual Host :**虚拟主机,是为消息队列提供的 一种逻辑隔离手段

exchange :交换机,负责接收消息 根据特定的规则将消息 路由到一个或多个queue中

**queue:**消息队列,用于储存消息

建立连接所需要信息

1.ip

2.端口号

3.虚拟主机

4.账号

5.密码

具体实现代码如下可参考去理解

以下是生产者具体流程代码:

java 复制代码
//1.建立连接
        ConnectionFactory connectionFactory=new ConnectionFactory();
        connectionFactory.setVirtualHost("");//虚拟主机
        connectionFactory.setPort(5672);//端口号
        connectionFactory.setHost("");//ip
        connectionFactory.setPassword("");
        connectionFactory.setUsername("");
        Connection connection=connectionFactory.newConnection();//创建 连接
        //2.创建 信道
        Channel channel=connection.createChannel();
        //3.声明 交换机(在此不创建 使用内置的交换机)
       //4.声明队列
        channel.queueDeclare("hello",true,false,false,null);
        /**
         * queueDeclare(String queue, boolean durable, boolean exclusive, boolean autoDelete,
         *                                  Map<String, Object> arguments)
         *     queue :队列名称
         *     durable:是否可持久化
         *     exclusive:是否独占
         *     autoDelete:是否自动删除
         *     arguments:参数
         *
         */
        //5.传递消息
        String msg="hello,RabbitMQ";
        channel.basicPublish("","hello",null,msg.getBytes());
        /**
         * basicPublish(String exchange, String routingKey, BasicProperties props, byte[] body)
         * exchange:交换机名称//此处不写使用默认的交换机
         * routingKey:交换机与队列建立联系的,内置交换机🀄 routingKey与队列名称相同
         * props:属性配置
         * body:要发送的消息
         */
        //6.释放资源
//        channel.close();
//        connection.close();

以下的是消费者代码

java 复制代码
 //1.连接
        ConnectionFactory connectionFactory=new ConnectionFactory();
        connectionFactory.setHost("");
        connectionFactory.setUsername("");
        connectionFactory.setPassword("");
        connectionFactory.setPort(5672);
        connectionFactory.setVirtualHost("");
        //2.创建chenel
        Connection connection=connectionFactory.newConnection();
        Channel channel=connection.createChannel();
        //3.声明队列
        channel.queueDeclare("hello",true,false,false,null);

        //4.消费消息
        DefaultConsumer consumer=new DefaultConsumer(channel){
            @Override
            public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {
//                super.handleDelivery(consumerTag, envelope, properties, body);
                System.out.println("接收到消息"+new String(body));
            }
        };
        channel.basicConsume("hello",true,consumer);
        /**
         * basicConsume(String queue, boolean autoAck, Consumer callback
         * queue 队列名称
         * autoAck:是否自动确认
         * callback:对消息具体的执行逻辑
         *
         */
        //等待程序打印完毕
        Thread.sleep(2000);

        //5.释放资源
        channel.close();
        connection.close();

根据以上代码结合RabbitMQ界面化操作 ,可以很清晰的理解生产者与消费者模型

上述代码只是简单代码,其中一些信息 up删除了,大家复制代码时记得去补充,up自己的云服务器内容 不宜公开哈哈,希望 大家可以通过此篇博客大致了解一下 RabbitMQ是什么 具体更详细的敬请后期专栏内容

相关推荐
宸津-代码粉碎机1 小时前
OpenAI 连夜迎战 Grok Bot 和 Muse:AI 智能体从 “会聊天” 到 “能办事”,现在入场还来得及吗
java·大数据·人工智能·分布式·python
程序猿乐锅3 小时前
【黑马点评 | 第八篇】Redisson分布式锁
java·数据库·spring boot·redis·分布式·spring·缓存
ly76893 小时前
RabbitMQ 消费确认与预取:manual ack、reject、nack 与 QoS 的取舍
rabbitmq·死信队列·消息可靠性·消费确认·qos 预取
灯澜忆梦4 小时前
【RabbitMQ #7】 | 消息转换器
分布式·rabbitmq·ruby
需要8264 小时前
分布式事务:Seata AT/TCC/SAGA 的取舍与踩坑
java·spring boot·分布式·spring·spring cloud
CS创新实验室7 小时前
为什么三台机器就能选出一个“带头大哥“?——Raft 一致性算法,一次讲透
分布式·操作系统
本人手速666+9 小时前
企微开发API如何设计客户冻结状态?WeComApi 在删除、投诉和异常客户场景中的自动化边界
运维·分布式·自动化·企业微信·企微外部群开发·wecomapi·企业微信二次开发
灯澜忆梦10 小时前
【RabbitMQ #4】 | Work 任务模型
分布式·rabbitmq
程序猿乐锅10 小时前
【黑马点评 | 第七篇】Redis 分布式锁的两种实现
java·数据库·redis·分布式·spring·缓存
千里码aicood12 小时前
基于Hadoop的机票价格波动分析系统的设计与实现
大数据·hadoop·分布式