首页 > 其他分享 >RabbitMQ(二)Exchange

RabbitMQ(二)Exchange

时间:2023-07-22 22:23:27浏览次数:31  
标签:交换器 Exchange 队列 绑定 RabbitMQ 消息 路由

RabbitMQ(二)Exchange


1 RabbitMQ的运行机制

  • AMQP中消息的路由过程和JMS存在一些差别,AMQP中增加了ExchangeBinding的角色
  • 生产者把消息发布到Exchange上,消息最终到达队列而被消费者接受,而Binding决定交换器的消息应该被发送到哪个队列

​ Exchange分发消息的时候根据类型的不同分发策略也会有所区别,目前共有四种类型:directfanouttopicheaders。headers匹配AMQP消息的header而不是路由键,headers和direct交换器完全一致,但是性能差很多,目前基本用不到了,所以直接看其他的三种:

2 Direct Exchange

  • 消息中的路由键Binding中的Binding Key完全匹配,直接交换机才会将该消息发送到该与交换机绑定的队列上

image-20230710204204929

3 Fanout Exchange

  • 每个发送到Fanout Exchange的消息都会分到所有绑定的队列上
  • Fanout Exchange不处理路由键,只是简单地将队列绑定到交换器上,每个发送到交换机的消息都会被转发到与该交换机绑定的队列中
  • 很像子网广播,每台子网内的主机都获得了一份复制的消息
  • Fanout类型转发消息是最快的

image-20230716155330951

4 Topic Exchange

  • topic交换器通过模式匹配分配消息的路由键属性,将路由键和某个模式进行匹配,此时队列需要绑定到一个模式上
  • 将路由键和绑定键的字符切分成单词,这些单词之间用点隔开
    • 符号#:匹配0个或者多个单词
    • 符号*:匹配一个单词
image-20230716155722114 image-20230716155643631

标签:交换器,Exchange,队列,绑定,RabbitMQ,消息,路由
From: https://www.cnblogs.com/tod4/p/17574411.html

相关文章

  • RabbitMQ(一)简介
    RabbitMQ(一)简介1简介大多应用中,可通过消息服务中间件来提升系统异步通信、扩展解耦能力消息中间件有两个重要概念:消息代理目的地消息发送者发送消息之后,将由消息代理接管,消息代理保证消息传递到指定目的地消息队列有两种形式的目的地队列(queue):点对点消息通......
  • RabbitMQ(四)RabbitMQ的确认机制
    RabbitMQ(四)RabbitMQ的确认机制保证消息不丢失、可靠抵达,可以使用事务消息,但性能会下降250倍,因此引入确认机制:publisher:ConfirmCallback确认模式publisher:returnCallBack未投递到queue退回模式consumer:ack机制1发送端的确认机制ConfirmCallbackConfirmCallba......
  • RabbitMQ(三)整合SpringBoot
    RabbitMQ(三)整合SpringBoot1整合RabbitMQ1导入依赖<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId></dependency>2查看容器的自动配置......
  • .NET 中使用RabbitMQ初体验
    在.NETCore中使用RabbitMQ前言逛园子的时候看到一篇.NET学习RabbitMq的文章(视频地址和文章地址放在文章底部了),写的不错,我也来实现一下。我是把RabbitMQ放在服务器的,然后先说一下如何部署它。注意:在使用到RabbitMQ的项目中需要安装Nuget包dotnetaddpackageRabbitMQ.Clien......
  • RabbitMQ 的CLI管理工具 rabbitmqadmin
     RabbitMQ的CLI管理工具rabbitmqadminApr20,2016Erlang的仓库下载配置,Erlang的升级,RabbitMQ的升级,服务启动,插件启用,RabbitMQCLI管理工具rabbitmqadmin的获取,RabbitMQ的架构、概念、消息投递过程,user、vhost、connection、exchange、binding、permission、channels、p......
  • spring cloud stream RabbitMQ实践
    上一篇文章介绍了《springcloudstreamkafka实践》提到springcloud封装了消息中间件,只需要简单修改配置就可以切换消息中间件。在kafka的基础上,切换到rabbitmq。一、配置依赖1<dependency>2<groupId>org.springframework.cloud</groupId>3<artifactId......
  • 图片元信息Exif(Exchangeable Image File)的获取和修改
    我们进行图片分类,做一些人工智能的项目或者利用Python来对图片进行分类,都可以利用到Exif信息。什么是Exif?Exif是一种图像文件格式,实际上Exif格式就是在JPEG格式头部插入了数码照片的信息,包括拍摄时的光圈、快门、白平衡、ISO、焦距、日期时间等各种和拍摄条件以及相机品牌、......
  • rabbitmq
    docker安装rabbitmq第一步:获取镜像1.命令获取镜像列表dockersearchrabbitMq2.拉取镜像dockerpullrabbitmq:management温馨提示:默认rabbitmq镜像是不带web端管理插件的,所以指定了镜像tag为rabbitmq-management,表示下载包含web管理插件版本镜像,其它Tag版本可以访问......
  • springboot下使用rabbitMQ之开发配置方式(二)
    springboot下使用rabbitMQ之传参及序列化(二)消息参数传递在开发中也是个坑,不论使用内置的SimpleMessageConverter还是Jackson2JsonMessageConverter均无法让Consumer接收动态参数一.序列化的问题首先贴出具体代码以及测试用例:消费者@RabbitListener(queues="text.q......
  • springboot下使用rabbitMQ之开发配置方式(一)
    springboot下使用rabbitMQ之开发配置方式(一)距离上次发布博客已经小一年了,这次...嗯,没错,我又回来啦.........