首页 > 其他分享 >RabbitMQ 五种模式

RabbitMQ 五种模式

时间:2024-11-15 17:10:40浏览次数:1  
标签:交换器 队列 模式 五种 RabbitMQ Key 交换机 路由 消息

RabbitMQ是一种常用的消息队列服务,它提供了五种消息模型:简单模型、工作队列模型、发布/订阅模型、路由模型、主题模型
1. 简单模型(Simple Message Queue,简称SQS):一个生产者,一个消费者,一个队列。
2. 工作队列模型(Work Queue):多个消费者共同处理一个队列中的任务,可以扩展进程数处理更多任务。
3. 发布/订阅模型(Publish/Subscribe):生产者将消息发给所有订阅者(广播方式)。
4. 路由模型(Routing):生产者将消息发给特定的队列,根据路由键。
5. 主题模型(Topics):类似于路由,但是可以使用模式匹配。

说明:以下内容来源自博客https://www.cnblogs.com/Runawayprogrammer/p/15980060.html

一. 简单模式

 

1. 消息生产者将消息放入队列

2. 消息的消费者(consumer) 监听(while) 消息队列,如果队列中有消息,就消费掉,消息被拿走后,自动从队列中删除(隐患 消息可能没有被消费者正确处理,已经从队列中消失了,造成消息的丢失)

3. 应用场景:聊天(中间有一个过度的服务器;p端,c端) 

二. 工作模式(资源的竞争)

 

1. 消息生产者将消息放入队列消费者可以有多个,消费者1,消费者2,同时监听同一个队列,消息被消费者C1 C2共同争抢当前的消息队列内容,谁先拿到谁负责消费消息(隐患,高并发情况下,默认会产生某一个消息被多个消费者共同使用,可以设置一个开关(syncronize,与同步锁的性能不一样) 保证一条消息只能被一个消费者使用)

2. 应用场景:红包;大项目中的资源调度(任务分配系统不需知道哪一个任务执行系统在空闲,直接将任务扔到消息队列中,空闲的系统自动争抢) 

三. publish/subscribe发布订阅(共享资源)

 

1. X代表交换机rabbitMQ内部组件,erlang 消息生产者是代码完成,代码的执行效率不高,消息生产者将消息放入交换机,交换机发布订阅把消息发送到所有消息队列中,对应消息队列的消费者拿到消息进行消费

2. 相关场景:邮件群发,群聊天,广播(广告) 

四. 路由模式

 

1. 消息生产者将消息发送给交换机按照路由判断,路由是字符串(info) 当前产生的消息携带路由字符(对象的方法),交换机根据路由的key,只能匹配上路由key对应的消息队列,对应的消费者才能消费消息;

2. 根据业务功能定义路由字符串

3. 从系统的代码逻辑中获取对应的功能字符串,将消息任务扔到对应的队列中业务场景:error 通知;EXCEPTION;错误通知的功能;传统意义的错误通知;客户通知;利用key路由,可以将程序中的错误封装成消息传入到消息队列中,开发者可以自定义消费者,实时接收错误; 

五. topic 主题模式(路由模式的一种)

 

1. 星号井号代表通配符

2. 星号匹配不多不少恰好1个词),#匹配一个或多个词

3. 路由功能添加模糊匹配

4. 消息产生者产生消息,把消息交给交换机

5. 交换机根据key的规则模糊匹配到对应的队列,由队列的监听消费者接收消息消费 

RabbitMQ -交换机

fanout模式: 

广播式交换器类型(fanout):该类交换器不分析所接收到消息中的Routing Key,默认将消息转发到所有与该交换器绑定的队列中去。广播式交换器转发效率最高,但是安全性较低,消费者应用程序可获取本不属于自己的消息。

 

direct模式:  

直接式交换器类型(direct):该类交换器需要精确匹配Routing Key与BindingKey,如消息的Routing Key = Cloud,那么该条消息只能被转发至Binding Key = Cloud的消息队列中去。直接式交换器的转发效率较高,安全性较好,但是缺乏灵活性,系统配置量较大。

 

topic模式: 

主题式交换器(Topic Exchange):该类交换器通过消息的Routing Key与Binding Key的模式匹配,将消息转发至所有符合绑定规则的队列中。Binding Key支持通配符,其中“”匹配一个词组,“#”匹配多个词组(包括零个)。例如,Binding Key=“.Cloud.#”可转发Routing Key=“OpenStack.Cloud.GD.GZ”、“OpenStack.Cloud.Beijing”以及“OpenStack.Cloud”的消息,但是对于Routing Key=“Cloud.GZ”的消息是无法匹配的。

  

1. 生产者发送消息到交换机
2. 交换机根据routingkey 转发消息给队列
3. 消费者监控队列,获取队列中信息
4. 消费成功删除队列中的消息

标签:交换器,队列,模式,五种,RabbitMQ,Key,交换机,路由,消息
From: https://www.cnblogs.com/li150dan/p/18548306

相关文章

  • 命令模式实现撤销和重做机制
    #include<vector>#include<iostream>//定义命令接口classCommand{public: virtualvoidexecute()=0; virtualvoidundo()=0;};//实现“增加”命令类classIncreaseCommand:publicCommand{private: int*_value; int_amount;public: IncreaseCom......
  • Oracle用户管理模式下的备份恢复
    Oracle用户管理模式下的备份恢复1、用户管理模式下的冷备份1.1查询数据库相关信息查实例selectinstance_name,version,status,archiver,database_statusfromv$instance;查数据库selectdbid,name,log_modefromv$database;查数据文件状态selectfile_name,tabl......
  • 国标GB28181软件LiteGBS国标GB28181-2022平台夜晚IPC灯光导致不能切换黑白模式且图像
    LiteGBS国标GB28181网页直播平台具有诸多显著特点。首先,它全力支持设备以GB28181协议接入,这意味着能够广泛接纳符合该协议标准的各类设备,为用户提供了丰富的设备选择空间。接入设备后,LiteGBS可对视频进行高效的解码、处理和分发等服务,确保视频信号的稳定传输和高质量呈现。在兼......
  • springBoot-RabbitMQ 高级特性(保姆级教程,一步一步带你熟悉RabbitMQ 相关高级特性)
    话不多说,看项目整体架构RabbitMQ高级特性保姆级教程好了,下面县开始贴生产者代码:publisher父依赖:<parent><artifactId>spring-boot-starter-parent</artifactId><groupId>org.springframework.boot</groupId><version>2.7.18</versi......
  • 标签显示模式
    标签显示模式:CSS布局与显示控制核心知识标签的显示模式是网页设计中CSS(层叠样式表)的一个重要概念,它决定了HTML元素在页面上的布局和显示方式。以下是标签显示模式所有相关的重要基础知识点:一、标签显示模式的概念标签显示模式,也称为元素的显示模式或盒模型显示类型,是指HT......
  • 知识管理驱动,打造企业知识中台业务管理新模式
    在数字化时代,知识已成为企业最宝贵的资产之一。如何高效地管理、整合和利用知识资源,成为企业提升竞争力、实现可持续发展的关键。知识管理驱动的企业知识中台业务管理新模式,正是为了应对这一挑战而诞生的。本文将深入探讨知识管理在打造企业知识中台过程中的核心价值、实施路径及......
  • 14.策略者模式设计思想
    14.策略者模式设计思想目录介绍01.策略模式基础介绍1.1策略模式由来1.2策略模式定义1.3策略模式场景1.4策略模式思考1.5策略模式的重心1.6理解策略唯一性1.7主要解决的问题02.策略模式原理2.1罗列一个场景2.2用例子理解策略2.3需求普通实现2.4案例......
  • 2024/11/14日 日志 关于 MVC 分层开发模式
    MVC是一种分层开发的模式,是我们在完成项目时常用的开发模式。点击查看代码--MVC模式--MVC是一种分层开发的模式,其中:--M:Model,业务模型,处理业务--V:View,视图,界面展示--C:Controller,控制器,处理请求,调用模型和视图----MVC好处--职责单一,互不影响--有利于分......
  • 设计模式之代理模式(Proxy)
    关于代理模式某些情况下,一个客户不能或者不想直接访问另一个对象,这时需要找一个中介帮忙完成某项任务,这个中介就是代理对象。例如,我们要买火车票可以不去火车站买,可以通过12306网站或者火车票代售点买。代理模式定义:由于某些原因需要给对象提供一个代理以控制对该对象的......
  • SpringBoot连接redis哨兵模式集群
    一、maven依赖org.springframework.bootspring-boot-starter-data-redisio.lettucelettuce-core二、nacos配置spring:redis:sentinel:master:mymasternodes:sentinel.IP1:6380,sentinel.IP2:24080password:123456timeout:10slettuce:pool:#连接池中的最......