消息交换模式RabbitMQ简介

RabbitMQ是AMQP的一个典型实现,它消息发布者的消息发布到Exchange上,同时需要制定routingkey,可以通过指定交换机的不同模式实现不同的行为。

RabbitMQ提供了四种Exchange:fanout,direct,topic和header。其中header模式在实际使用中较少,本文只对前三种模式进行比较。

Direct模式(点对点通讯):

Direct Exchange是RabbitMQ默认的交换机模式,也是最简单的模式,根据key全文匹配去寻找队列。规则如下:

发布到exchange的消息通过routingkey的完全匹配发布到queue上。如果routingkey不存在,则丢弃

点对点方式是最为传统和常见的通讯方式,它支持一对一、一对多、多对多、多对一等多种配置方式,支持树状、网状等多种拓扑结构。

fanout模式(多点广播):

fanout模式比较简单,广播式的,无视routingkey直接发送给所有的queue

Topic模式(发布/订阅):

任何发送到Topic Exchange的消息都会被转发到所有关心RouteKey中指定话题的Queue上

  • 这种模式较为复杂,简单来说,就是每个队列都有其关心的主题,所有的消息都带有一个"标题"(RouteKey),Exchange会将消息转发到所有关注主题能与RouteKey模糊匹配的队列。
  • 这种模式需要RouteKey,也许要提前绑定Exchange与Queue。
  • 在进行绑定时,要提供一个该队列关心的主题,如"#.log.#"表示该队列关心所有涉及log的消息(一个RouteKey为"MQ.log.error"的消息会被转发到该队列)。
  • "#"表示0个或若干个关键字,""表示一个关键字。如"log."能与"log.warn"匹配,无法与"log.warn.timeout"匹配;但是"log.#"能与上述两者匹配。
  • 同样,如果Exchange没有发现能够与RouteKey匹配的Queue,则会抛弃此消息。

到此这篇关于消息交换模式RabbitMQ的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • springboot +rabbitmq+redis实现秒杀示例

    目录 实现说明 1.工具准备 2.数据表 3.pom 4.代码结构 5.配置config 6.订单业务层 7.redis实现层 8.mq实现层 9.redis模拟初始化库存量 10.controller控制层 11.测试 12.测试结果 实现说明 这里的核心在于如何在大并发的情况下保证数据库能扛得住压力,因为大并发的瓶颈在于数据库.如果用户的请求直接从前端传到数据库,显然,数据库是无法承受几十万上百万甚至上千万的并发量的.因此,我们能做的只能是减少对数据库的访问.例如,前端发出了100万个请求,

  • python对RabbitMQ的简单入门使用教程

    目录 (一)RabbitMQ的简介 (二)RabbitMQ的安装 (三)python操作RabbitMQ (四)RabbitMQ简单模式 (五)RabbitMQ发布订阅模式 (六)RabbitMQ RPC模式 (七)说点啥 (八)结语 (一)RabbitMQ的简介 RabbitMq 是实现了高级消息队列协议(AMQP)的开源消息代理中间件.消息队列是一种应用程序对应用程序的通行方式,应用程序通过写消息,将消息传递于队列,由另一应用程序读取 完成通信.而作为中间件的 RabbitMq 无疑是目前最

  • springcloud安装rabbitmq并配置延迟队列插件的过程详解

    目录 0. 引言 1. docker安装 1.1 安装rabbitmq 1.2 安装延迟队列插件delayed_message_exchange 2. docker打包安装rabbitmq+延迟队列插件 0. 引言 本期主要讲解如何利用docker快速安装rabbitmq并且配置延迟队列插件 1. docker安装 1.1 安装rabbitmq 1.下载镜像 docker pull rabbitmq 2.安装镜像 docker run -d --hostname my-rabbit --name

  • docker安装RabbitMQ及安装延迟插件的详细过程

    目录 1.首先说一下什么是MQ 1.1为什么要用MQ/MQ有什么用 1.1.1流量消峰 1.1.2应用解耦 1.1.3异步处理 2.安装RabbitMq 2.1首先拉取镜像 2.2启动镜像 2.3启动 rabbitmq_management (RabbitMQ后台管理) 2.3.1打开RabbitMQweb界面 3.插件下载并安装 安装完成后用工具将插件文件上传到服务器上 我这个安装攻略首先得保证服务器上安装过docker了 如果没安装docker请先去安装docker 1.首先说一下什么是MQ

  • Windows下RabbitMQ安装及配置详解

    目录 1.安装Erlang 2.安装rabbitmq rabbitMQ是一个在AMQP协议标准基础上完整的,可服用的企业消息系统.它遵循Mozilla Public License开源协议,采用 Erlang 实现的工业级的消息队列(MQ)服务器,Rabbit MQ 是建立在Erlang OTP平台上. 1.安装Erlang 下载地址:https://www.erlang.org/downloads,本文选择OTP 21.0.1 Windows 64-bit Binary File?(91707

  • RabbitMQ的安装和配置可视化界面的详细步骤

    目录 RabbitMQ在windows下的安装 检查RabbitMQ运行状态 配置可视化RabbitMQ管理界面 RabbitMQ在linux下的安装 RabbitMQ在windows下的安装 RabbitMQ 它依赖于Erlang,在window上安装时,需要先安装Erlang. 首先确定你的window电脑是32位还是64位,然后下载对应版本的Erlang软件.以下的安装以window 64位电脑举例. Erlang/OTP包 的下载地址:http://www.erlang.org/down

  • SpringBoot+RabbitMQ 实现死信队列的示例

    前言 死信:无法被消费的消息,称为死信. 如果死信一直留在队列中,会导致一直被消费,却从不消费成功. 所以我们专门开辟了一个来存放死信的队列,叫死信队列(DLX,dead-letter-exchange). 死信的几种来源: 消息 TTL 过期(time to live,存活时间,可以用在限时支付消息) 队列达到最大长度(队列满了,无法路由到该队列) 消息被拒绝( basic.reject / basic.nack ),并且 requeue = false 环境准备配置 准备 MQ 的队列和环境

  • SpringBoot整合RabbitMQ实战教程附死信交换机

    目录 前言 环境 配置 配置文件 业务消费者 死信消费者 测试 前言 使用springboot,实现以下功能,有两个队列1.2,往里面发送消息,如果处理失败发生异常,可以重试3次,重试3次均失败,那么就将消息发送到死信队列进行统一处理,例如记录数据库.报警等完整demo项目代码https://gitee.com/daenmax/rabbit-mq-demo 环境 Windows10,IDEA,otp_win64_25.0,rabbitmq-server-3.10.41.双击C:\Program

  • 阿里云服务器部署RabbitMQ集群的详细教程

    目录 一.为什么要搭建RabbitMQ集群? 二.RabbitMQ集群的三种模式 ️单机模式 普通集群模式 镜像队列 三.阿里云服务器下Docker搭建RabbitMQ集群 ️Docker安装RabbitMQ集群 测试RabbitMQ集群 四.SpringBoot整合RabbitMQ集群 创建Maven聚合工程 引入共有依赖 创建生产者 创建消费者 ️核心源码 五.测试消息的生产与消费 小结 一.为什么要搭建RabbitMQ集群? 未部署集群的缺点 如果RabbitMQ集群只有一个broker节

  • 消息交换模式RabbitMQ简介

    RabbitMQ是AMQP的一个典型实现,它消息发布者的消息发布到Exchange上,同时需要制定routingkey,可以通过指定交换机的不同模式实现不同的行为. RabbitMQ提供了四种Exchange:fanout,direct,topic和header.其中header模式在实际使用中较少,本文只对前三种模式进行比较. Direct模式(点对点通讯): Direct Exchange是RabbitMQ默认的交换机模式,也是最简单的模式,根据key全文匹配去寻找队列.规则如下: 发布到e

  • 详解消息队列及RabbitMQ部署和使用

    目录 什么是消息队列 为什么需要消息队列 常见的消息队列 ActiveMQ RabbitMQ ZeroMQ Kafka RocketMQ RabbitMQ 的部署和使用 Python 编写生产者 Python 编写消费者 最后的话 什么是消息队列 消息队列拆开了看,就是消息 + 队列,消息是什么?其实就是程序之间通讯所用到的数据,消息从生产者那里产生,进入队列后,安装设计好的规则出队,由消费者消费.仅此而已. 为什么需要消息队列 消息队列,最重要的是队列,可以想象一下没有队列的场景,你去银行办业

  • 高级消息队列协议AMQP简介

    历史: Message Queue的需求由来已久,80年代最早在金融交易中,高盛等公司采用Teknekron公司的产品,当时的Message queuing软件叫做:the information bus(TIB). TIB被电信和通讯公司采用,路透社收购了Teknekron公司.之后,IBM开发了MQSeries,微软开发了Microsoft Message Queue(MSMQ).这些商业MQ供应商的问题是厂商锁定,价格高昂.2001年,Java Message queuing试图解决锁定和

  • 详解Spring Cloud Stream使用延迟消息实现定时任务(RabbitMQ)

    我们在使用一些开源调度系统(比如:elastic-job等)的时候,对于任务的执行时间通常都是有规律性的,可能是每隔半小时执行一次,或者每天凌晨一点执行一次.然而实际业务中还存在另外一种定时任务,它可能需要一些触发条件才开始定时,比如:编写博文时候,设置2小时之后发送.对于这些开始时间不确定的定时任务,我们也可以通过Spring Cloud Stream来很好的处理. 为了实现开始时间不确定的定时任务触发,我们将引入延迟消息的使用.RabbitMQ中提供了关于延迟消息的插件,所以本文就来具体介绍

  • RabbitMQ消息确认机制剖析

    目录 前言 消息确认 基本流程 消息确认模式 ConfirmCallback确认模式 ReturnCallback退回模式 消息发送者确认 消息接收者确认 basicAck模式 basicNack模式 basicReject模式 测试 解决办法 消费者确认失败 总结 前言 上一章讲解了RabbitMq的三种Exchange消息发送的模式,但是在默认情况下RabbitMQ并不能保证消息是否发送成功,以及是否能被成功消费,为了保证消息在传递过程中不丢失,需要对消息进行确认机制,来提高消息的可靠性.

  • WCF配置心得

    根据蒋金楠老师的博文所说的, WCF的终结点有三个要素组成,分别是地址(Address).绑定(Binding)和契约(Contract),简记可写成Endpoint = ABC. 地址:地址决定了服务的位置,解决了服务寻址的问题. 绑定:绑定实现了通信的所有细节,包括网络传输.消息编码,以及其他为实现某种功能对消息进行的相应处理.绑定的类型包括BasicHttpBinding.WsHttpBinding.NetTcpBinding等. 契约:契约是对服务操作的抽象,也是对消息交换模式以及消息结

  • WCF入门教程之Windows通讯接口

    目录 概述 方案结构: 一.Contracts协定 二.Services服务 三.ServiceHost自我服务宿主 终结点(EndPoint) 1.编码方式 2.配置文件方式 四.IIS宿主 五.实现Rest 风格的web服务 六.使用预配置的主机类WebServiceHost 七.client:一个客户端 1.使用VS“添加服务引用”生成的CalculatorServiceClient 2.不用添加服务引用,使用ChannelFactory方式 八.绑定类型 1. 基于HTTP的绑定 2. 

  • WCF实现双向通信

    请求过程中的回调 这是一种比较典型的双工消息交换模式的表现形式,客户端在进行服务调用的时候,附加上一个回调对象:服务在对处理该处理中,通过客户端附加的回调对象(实际上是调用回调服务的代理对象)回调客户端的操作(该操作在客户端执行).整个消息交换的过程实际上由两个基本的消息交换构成,其一是客户端正常的服务请求,其二则是服务端对客户端的回调.两者可以采用请求-回复模式,也可以采用单向(One-way)的MEP进行消息交换.图1描述了这样的过程,服务调用和回调都采用请求-回复MEP. 图1 我们沿用计

  • SpringBoot整合RabbitMQ实现六种工作模式的示例

    目录 前提概念 生产者 队列 消费者 SpringBoot整合RabbitMQ基本配置添加maven依赖 1. 简单(simple)模式 2. 工作模式 生产消息: 3. 发布订阅模式 特点 创建队列.交换机以及绑定: 4. 路由模式 特点 创建队列.交换机以及绑定: 5. 主题模式 特点 创建交换机和队列: 6. RPC模式 特点 消费端添加返回值: 交换机类型 Direct Exchange(直连) Fanout Exchange(扇形) Topic Exchange(主题) 总结 源码示例

  • Java RabbitMQ的三种Exchange模式

    目录 简介 Direct模式 Fanout Exchange 示例代码 配置类 生产者 消费者 测试代码 Topic模式 示例代码 配置类 消息发送者 消息接收者 测试代码 总结 前言: 上一章讲解RabbitMq的相关知识和如何使用Spring Boot集成Rabbitmq发送消息,本文将讲解RabbitMQ三种Exchange模式. 简介 RabbitMQ的Exchange通常有三种模式分别为:Direct模式.Fanout模式.Topic模式. Direct模式 Rabbit的Direct

随机推荐