首页 > 其他分享 >消息队列之RabbitMQ

消息队列之RabbitMQ

时间:2024-10-14 20:46:52浏览次数:8  
标签:调用 队列 RabbitMQ 消息 2.2 模式

1.初识MQ

在分布式微服务中,不同服务接口之间的调用分为同步调用和异步调用。
使用同步调用有几种问题

  • 拓展性差
  • 性能差
  • 级联失败

因此在大部分场景,我们使用的都是异步调用。
异步调用方式其实就是基于消息通知的方式,一般包含三个角色:

  • 消息发送者:投递消息的人,就是调用方
  • 消息Broker:管理、暂存、转发消息,你可以把它理解成微信服务器
  • 消息接收者:接收和处理消息的人,就是服务提供方

image

图中不难看出,Broker是实现异步调用的核心,异步调用完全依赖于Broker的可靠性,安全性和性能,我们在这里使用MQ(消息队列)来实现Broker。

2.RabbitMQ

目前国内常用的MQ实现方案为RabbitMQ,其官网地址为https://www.rabbitmq.com/ 有兴趣可以进去看看。

2.1安装RabbitMQ

在这里我们使用Docker安装RabbitMQ,运行以下命令即可

点击查看代码
docker run \
 -e RABBITMQ_DEFAULT_USER=test \
 -e RABBITMQ_DEFAULT_PASS=123321 \
 -v mq-plugins:/plugins \
 --name mq \
 --hostname mq \
 -p 15672:15672 \
 -p 5672:5672 \
 --network hm-net\
 -d \
 rabbitmq:3.8-management

安装完成后,我们访问 http://你安装RabbitMQ的ip地址:15672 即可看到管理控制台。首次访问需要登录,默认的用户名和密码在配置文件中已经指定了。
image
登录进去后如图所示:
image
RabbitMQ对应的架构如图:
image
其中包含几个概念:

  • publisher:生产者,也就是发送消息的一方
  • consumer:消费者,也就是消费消息的一方
  • queue:队列,存储消息。生产者投递的消息会暂存在消息队列中,等待消费者处理
  • exchange:交换机,负责消息路由。生产者发送的消息由交换机决定投递到哪个队列。
  • virtual host:虚拟主机,起到数据隔离的作用。每个虚拟主机相互独立,有各自的exchange、queue

2.2RabbitMQ的五种模式

2.2.1简单模式

image
如图,简单模式中发布者直接将消息发步到消息队列中,消费者从消息队列中获取消息

2.2.2工作队列模式【Work Queues】

image
多个消费者都去获取消息队列中的消息,必然会有竞争关系,这种模式是能者多劳,简单来说就是执行效率快的消费者获取到的消息更多。

2.2.3发布订阅模式【Publish/Subscribe】

image
这种模式相当于群聊中的群发消息,发布者发布消息后最终消费者都能收到消息。

2.2.4路由模式【Routing】

image
这种模式可以理解为将消息私发给某个消费者。

2.2.5Topic模式【Topics】

image

这种模式与上一种类似,不过多了匹配规则,发布者只会将消息转发给规则匹配的消费者。
未完待续。。。。。。。。。。

标签:调用,队列,RabbitMQ,消息,2.2,模式
From: https://www.cnblogs.com/fangbianmian/p/18466047

相关文章

  • RabbitMQ
    RabbitMQ架构图publisher:生产者,也就是发送消息的一方consumer:消费者,也就是消费消息的一方queue:队列,存储消息。生产者投递的消息会暂存再消息队列中,等待消费者处理exchange:交换机,负责消息路由。生产者发送的消息由交换机决定投递到哪个队列virtualhost:虚拟主机,起到数据隔离......
  • RabbitMQ
    一、RabbitMQ的架构图二、写出RabbitMQ的五种模式简单模型WorkQueues模型Fanout交换机Direct交换机Topic交换机......
  • RabbitMQ的五种消息模式
    一、简单模式(Simple)最基础的模式,适用于简单的场景,生产者直接向队列发送消息,消费者从监听的队列中获取消息,没有交换机二、工作队列模式(WorkQueues)实现负载均衡,平摊压力,多个消费者监听同一个队列,队列将消息均匀分配给消费者,同样没有交换机三、发布/订阅模式(Publish/Subscribe)......
  • RabbitMQ的五种模式
    一、五种模式详解1.简单模式(Queue模式)当生产端发送消息到交换机,交换机根据消息属性发送到队列,消费者监听绑定队列实现消息的接收和消费逻辑编写.简单模式下,强调的一个队列queue只被一个消费者监听消费.1.1结构生产者:生成消息,发送到交换机交换机:根据消息属性,将消息......
  • 微服务02 Kafka消息队列, Dubbo, Springcloud微服务框架, Nacos
    3.6Kafka部署kafka下载链接http://kafka.apache.org/downloads#清华源https://mirrors.tuna.tsinghua.edu.cn/apache/kafka/kafka版本格式kafka_<scala版本>_<kafka版本>#示例:kafka_2.13-2.7.0.tgz官方文档:http://kafka.apache.org/quickstart#二进制安装......
  • 【数据结构】学习笔记之栈和队列
    目录一、栈基本概念二、顺序栈2.1置空栈2.2判栈空2.3判栈满2.4进栈2.5退栈2.6取栈顶元素三、链栈3.1建栈3.2判栈空3.3进栈3.4退栈3.5取栈顶元素四、队列基本概念五、顺序队列5.1置队空5.2判队空5.3判队满5.4入队5.5出队5.6取队头元素......
  • rocketMQ中事务发送消息
    rocketMQ中有关事务的发送消息方式,写的一个demo1、在MyProducer类中的方法,即先定义调用@ComponentpublicclassMyProducer{@AutowiredprivateRocketMQTemplatetemplate;publicvoidsendTractionMessage(Stringtopic,Stringmsg)throwsInterruptedExcepti......
  • ZMQ消息队列 PUSH/PULL PUB/SUB REQ/REP
    1.REQ/REP客户端(Client)/服务器(Server)importorg.zeromq.ZContext;importorg.zeromq.ZMQ;/***@Description:(服务器)*@CreateTime:2024/3/2018:22*/publicclassServer{publicstaticvoidmain(String[]args)throwsInterruptedException{......
  • rabbitmq 新下载链接
    Linux下安装RabbitMQ需要依赖socat和erlang插件环境1插件下载 1.1RabbitMQ下载下载地址一:https://www.rabbitmq.com/download.html下载地址二:https://packagecloud.io/rabbitmq/rabbitmq-server1.2Erlang下载Erlang的版本需要与RabbitMQ的版本匹配版本对应地址如下:http......
  • rocketMQ发送消息demo
    在发送之前,需要先搭建好rocketMQ之后便是创建两个springboot工程,一个是生产中producer生产者、另外一个是consumer消费者一、生产者创建步骤:1、通过idea创建一个springboot工程,在创建工程的时候,添加spring-boot-starter-web依赖即可2、在pom.xml文件中添加rocketMQ相关依赖,注......