RabbitMQ知识点梳理

1. 什么是MQ

MQ(Message Quene) : 即 消息队列消息中间件 ,通过典型的 生产者消费者模型,生产者不断向消息队列中生产消息,消费者不断的从队列中获取消息。因为消息的生产和消费都是异步的,而且只关心消息的发送和接收,没有业务逻辑的侵入,轻松的实现系统间解耦。它通过利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成。

2.RabbitMQ

官网下载地址: https://www.rabbitmq.com/download.html
在这里插入图片描述

2.1 web管理界面介绍

在这里插入图片描述

  • connections:无论生产者还是消费者,都需要与RabbitMQ建立连接后才可以完成消息的生产和消费,在这里可以查看连接情况

  • channels:通道,建立连接后,会形成通道,消息的投递获取依赖通道。

  • Exchanges:交换机,用来实现消息的路由

  • Queues:队列,即消息队列,消息存放在队列中,等待消费,消费后被移除队列。

2.2 用户添加

在这里插入图片描述
上面的Tags选项,可以选择用户权限,权限选项如下:

  • 超级管理员(administrator)

    可登陆管理控制台,可查看所有的信息,并且可以对用户,策略(policy)进行操作。

  • 监控者(monitoring)

    可登陆管理控制台,同时可以查看rabbitmq节点的相关信息(进程数,内存使用情况,磁盘使用情况等)

  • 策略制定者(policymaker)

    可登陆管理控制台, 同时可以对policy进行管理。但无法查看节点的相关信息(上图红框标识的部分)。

  • 普通管理者(management)

    仅可登陆管理控制台,无法看到节点信息,也无法对策略进行管理。

  • 其他

    无法登陆管理控制台,通常就是普通的生产者和消费者。

2.3 创建虚拟主机
  • 虚拟主机:为了让各个用户可以互不干扰的工作,RabbitMQ添加了虚拟主机(Virtual Hosts)的概念。其实就是一个独立的访问路径,不同用户使用不同路径,各自有自己的队列、交换机,互相不会影响。

在这里插入图片描述

2.4 用户与虚拟主机绑定

① 新建虚拟主机:
在这里插入图片描述
在这里插入图片描述
② 新建用户
在这里插入图片描述
在这里插入图片描述
③ 绑定虚拟主机
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.RabbitMQ的消息模型

3.1 AMQP协议模型

在这里插入图片描述

3.2 RabbitMQ支持的消息模型

在这里插入图片描述
在这里插入图片描述

3.2.1 引入依赖
<dependency>
    <groupId>com.rabbitmq</groupId>
    <artifactId>amqp-client</artifactId>
    <version>5.7.2</version>
</dependency>
3.2.2 “Hello World”模式

在这里插入图片描述
在上图的模型中,有以下概念:

  • P:生产者,消息生产者
  • C:消费者,消息消费者
  • queue:消息队列,图中红色部分。类似一个邮箱,可以缓存消息;生产者向其中投递消息,消费者从其中取出消息。

1)消息生产者代码

public class Provider
{
    //生产消息
    @Test
    public void testSendMessage() throws IOException, TimeoutException
    {
        //创建连接mq的连接工厂对象
        ConnectionFactory connectionFactory = new ConnectionFactory();
        //设置连接rabbitmq主机
        connectionFactory.setHost("127.0.0.1");
        connectionFactory.setPort(5672);
        //设置连接哪个虚拟主机
        connectionFactory.setVirtualHost("lucky");
        //设置访问虚拟主机的用户名和密码
        connectionFactory.setUsername("luckyUser");
        connectionFactory.setPassword("123");
        //获取连接对象
        Connection connection = connectionFactory.newConnection();
        //获取连接中通道
        Channel channel = connection.createChannel();
        //通道绑定对应消息队列
        //参数1:队列名称 如果队列中不存在会自动创建
        //参数2:用来定义队列特性是否持久化  true持久化队列 false 不持久化  而非队列中消息
        //参数3:exclusive 是否独占队列 true 独占队列
        //参数4:autoDelete 是否在消费完成后自动删除队列 true 自动删除
        //参数5: 附加参数
        channel.queueDeclare("hello",true,false,false,null);

        //发布消息
        //参数1:交换机名称 参数2:队列名称 参数3:传递消息额外设置    MessageProperties.PERSISTENT_TEXT_PLAIN  消息也持久化  (需要保证生产者与消费者参数一致)  参数4:消息具体内容
        channel.basicPublish("","hello", MessageProperties.PERSISTENT_TEXT_PLAIN,"hello rabbitmq".getBytes());
        channel.close();
        connection.close();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值