写点什么

rabbitmq 简介

用户头像
小黄鸡1992
关注
发布于: 5 小时前

1.什么是消息队列

消息队列,主要解决异步消息的管理(注册后,短信发送不是必须,可以使用队列)。实现系统之间的双向解耦,同时也能起到消息缓冲,消息分发的作用。当生产者产生大量数据,而消费者无法快速消费,(秒杀数据量过大使系统崩溃,队列可以废弃多余请求),或者是消费者异常了(服务挂掉后使请求丢失,队列可以保存请求)。


说白话讲,主要作用就是异步,削峰与解耦。

1.rabbitMQ 简介

1.运行流程


rabbitmq 是消息队列的一种,通过上图可以看到工作流程。生产者把请求给交换机 ,交换机把请求按照一定绑定关系发送给队列(平均发送),然后队列在把请求给消费者。其中交换机只负责转发并不负责保存,然后通过绑定关系与队列相绑定。交换器按照路由键绑定队列。当多消费者消费一个队列时,队列会均匀的发送到多个消费者之中。


其中


  1. 生产者为发送消息的服务/类。

  2. 消费者是接收消息的服务/类。

  3. 交换机将接收到的消息按照交换机类型发送给队列。

  4. 未被消费的消息都被存放在队列中。

2.交换机类型

rabbitmq 提供了四种交换机。


  1. fanout:发送给所有绑定该交换机的队列。

  2. Direct:默认的交换方法,按照提供的 key 去寻找队列。如果 key 为 A,数据只能发送到 A 的队列中。

  3. Topic:模糊匹配,只要符合该格式就可以。可以存在两种特殊字符“”与“#”,用于做模糊匹配,其中“”用于匹配一个单词,“#”用于匹配多个单词(可以是零个)。如*.C.# 可以匹配 A.C.B.不能匹配 A.B.C.(其中以 banding key 关联)

  4. head:根据消息内容中的 headers 属性进行匹配。

3.使用的工具类

ConnectionFactory、Connection、Channel 都是 RabbitMQ 对外提供的 API 中最基本的对象。Connection 是 RabbitMQ 的 socket 链接,它封装了 socket 协议相关部分逻辑。ConnectionFactory 为 Connection 的制造工厂。


Channel 是我们与 RabbitMQ 打交道的最重要的一个接口,我们大部分的业务操作是在 Channel 这个接口中完成的,包括定义 Queue、定义 Exchange、绑定 Queue 与 Exchange、发布消息等。

4.页面新建队列

还可以在 http://localhost:15672/#/exchanges 中直接配置队列和交换机绑定关系。(略微有点麻烦,不建议使用)

1.新建队列

2.新建交换机

3.新增绑定关系

绑定交换器和队列之间的关系 ,然后就可以直接使用了,并不需要 java 内部声名使用。



用户头像

小黄鸡1992

关注

小黄鸡加油 2021.07.13 加入

一位技术落地与应用的博主,带你从入门,了解和使用各项顶流开源项目。

评论

发布
暂无评论
rabbitmq简介