首页 > 其他分享 >RabbitMq应用示例(RabbitMq第三篇)

RabbitMq应用示例(RabbitMq第三篇)

时间:2023-08-12 14:35:43浏览次数:40  
标签:第三篇 示例 队列 Exchange 绑定 RabbitMq 交换机 消息 路由

一、应用示例:

参考文献:(写的很好的一篇文章,小编已经参照该博主的内容完整的编写了一遍,可能会有一些遐思,后续会把自己编写的代码也补充一下)

Springboot 整合RabbitMq ,用心看完这一篇就够了_springboot rabbitmq_小目标青年的博客-CSDN博客

简单的消息推送流程图:

RabbitMq应用示例(RabbitMq第三篇)_消息推送

黄色的圈圈就是我们的消息推送服务,将消息推送到中间方框里面也就是 rabbitMq的服务器,然后经过服务器里面的交换机、队列等各种关系将数据处理入列后,最终右边的蓝色圈圈消费者获取对应监听的消息。

常用的交换机有一下三种,因为消费者是从队列获取信息的,队列是绑定交换机的(一般),所以对应的消息推送/接收模式也会有以下几种:

Direct Exchange(直连型交换机)

直连型交换机,根据消息携带的路由键(routingKey)将消息投递给对应队列。

大致流程,有一个队列绑定到一个直连交换机上,同时赋予一个路由键。

然后当一个消息携带着路由值为X,这个消息通过生产者发送给交换机时,交换机就会根据这个路由值X去寻找绑定值也是X的队列。

Fanout Exchange(扇形交换机)

扇形交换机,这个交换机没有路由键的概念,就算你绑定了路由键也是无效的。这个交换机在接收到消息后,会直接转发到绑定到它上面的所有队列。

Topic Exchange(主题交换机)

主题交换机,这个交换机其实跟直连交换机流程差不多,但是它的特点就是在它的路由键和绑定键之间是有规则的。

*(星号)用来表示一个单词(必须出现的)

#(井号)用来表示任意数量(零个或多个)单词

通配的绑定键是跟队列进行绑定的,举个小例子:

队列Q1 绑定键为*.TT.*

队列Q2绑定键为 TT.#

如果一条消息携带的路由键为 A.TT.B,那么队列Q1将会收到;

如果一条消息携带的路由键为TT.AA.BB,那么队列Q2将会收到;

主题交换机是非常强大的,为啥这么膨胀?

当一个队列的绑定键为“#”(井号) 的时候,这个队列将会无视消息的路由键,接收所有的消息。

当*(星号)和 #(井号)这两个特殊字符都未在绑定键中出现的时候,此时主题交换机就拥有的直连交换机的行为。 所以主题交换机也就实现了扇形交换机的功能,和直连交换机的功能。 另外还有 Header Exchange 头交换机,Default Exchange 默认交换机,Dead Letter Exchange 死信交换机。


二、其他:rabbitmq注意事项

1、默认情况下访问port是5672,15672是api和管理界面的port

2、rabbitmq 管理界面默认账密:guest/guest






标签:第三篇,示例,队列,Exchange,绑定,RabbitMq,交换机,消息,路由
From: https://blog.51cto.com/xiaoxinao/7058405

相关文章

  • rabbitmq知识点
    key:rabbitmq的消息会携带一个key(RoutingKey),交换机和队列之间绑定也会指定一个key(BindingKey),通过这两个key的匹配可以确认消息的路由转发Exchange(交换机):消息到达rabbitmq服务内部的第一站,交换机会根据路由关系将消息转发到不同的队列如果没有任何队列与......
  • mongoDB 入门指南、示例
    一、准备工作1、下载mongoDB下载地址:http://www.mongodb.org/downloads选择合适你的版本相关文档:http://www.mongodb.org/display/DOCS/Tutorial2、安装mongoDBA、不解压模式:将下载下来的mongoDB-xxx.zip打开,找到bin目录,运行mongod.exe就可以启动服务,默认端口27017,db保存的路径......
  • 一个简单利用WebGL绘制频谱瀑布图示例
    先看效果还是比较节省性能的,这个还是包含了生成测试数据的性能,实际应用如果是直接通信获得数据应该还能少几毫秒吧!准备工作用了React,但是关系不大WebGL的基础用法(推荐看一看掘金里的一个教程:WebGL入门与实践)有兴趣应该读一读这个的源码GPU.JS,因为一开始偷学了一手flatten......
  • RabbitMq介绍(RabbitMq第一篇)
    RabbitMq就是消息队列一、什么是消息队列消息队列(MessageQueue)是一种用于在应用程序之间传递消息的通信方式,消息队列允许应用程序异步地发送和接受消息,并且不需要直接连接到对方。消息(Message)是指在应用间传送的数据。消息可以非常简单,比如只包含文本字符串,也可以更复杂,可能包含嵌......
  • 七月学习之Iptables场景示例
    10、Iptables场景示例10.1、iptables场景一场景描述1、对所有的地址开放本机的tcp(80、22、8080-9090)端口的访问2、允许对所有的地址开放本机的基于ICMP协议的数据包访问3、其他未被允许的端口禁止访问实现思路1、先允许端口、协议2、配置拒绝规则#INPUTiptables-Fiptab......
  • RabbitMQ面试题大全含答案
    rabbitmq的使用场景有哪些?①.跨系统的异步通信,所有需要异步交互的地方都可以使用消息队列。就像我们除了打电话(同步)以外,还需要发短信,发电子邮件(异步)的通讯方式。②.多个应用之间的耦合,由于消息是平台无关和语言无关的,而且语义上也不再是函数调用,因此更适合作为多个应用之间的松......
  • Java语言代码示例
    packagecom.qgproxy;importjava.io.ByteArrayOutputStream;importjava.io.InputStream;importjava.net.Authenticator;importjava.net.HttpURLConnection;importjava.net.InetSocketAddress;importjava.net.PasswordAuthentication;importjava.net.Proxy;importjava.......
  • PHP语言使用隧道代码示例
    /***请求**@param[type]$targetUrl目标站点*@param[type]$proxyIp代理ip*@param[type]$proxyPort代理端口*@param[type]$proxyUserAuthKey*@param[type]$proxyPasswordAuthPwd*@returnvoid*/functionsendRequest($targetUrl,$proxyIp,$proxyPort,$proxy......
  • Python语言代码示例
    PythonrequestsimportrequeststargetURL="https://ip.hahado.cn/api/index?ip=&type=0"proxyAddr="您的代理IP:端口"authKey="请改成您的Key"password="请改成您的AuthPwd"#账密模式proxyUrl="http://%(user)s:%(password)s@%(serv......
  • 复习消息队列之RabbitMQ
    概念:RabbitMQ是使用Erlang语言开发的开源消息队列系统,基于AMQP协议来实现。AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。AMQP协议更多用在企业系统内对数据一致性、稳定性和可靠性要求很高的场景,对性能和吞吐量的要求还在其次。对比:RabbitMQ对......