RbMQ 简介
2024-10-01 07:02:46
Broker:简单来说就是消息队列服务器实体。
Exchange:消息交换机,它指定消息按什么规则,路由到哪个队列。
Queue:消息队列载体,每个消息都会被投入到一个或多个队列。
Binding:绑定,它的作用就是把exchange和queue按照路由规则绑定起来。
Routing Key:路由关键字,exchange根据这个关键字进行消息投递。
vhost:虚拟主机,一个broker里可以开设多个vhost,用作不同用户的权限分离。
producer:消息生产者,就是投递消息的程序。
consumer:消息消费者,就是接受消息的程序。
channel:消息通道,在客户端的每个连接里,可建立多个channel,每个channel代表一个会话任务。
(1)exchange持久化,在声明时指定durable => 1
(2)queue持久化,在声明时指定durable => 1
(3)消息持久化,在投递时指定delivery_mode => 2(1是非持久化)
prefetchCount=1,则Queue每次给每个消费者发送一条消息
Exchange Type:
fanout:所有与它绑定的Queue中
direct:binding key与routing key完全匹配的Queue中
topic:
- routing key为一个句点号“. ”分隔的字符串(我们将被句点号“. ”分隔开的每一段独立的字符串称为一个单词),如“stock.usd.nyse”、“nyse.vmw”、“quick.orange.rabbit”
- binding key与routing key一样也是句点号“. ”分隔的字符串
- binding key中可以存在两种特殊字符“*”与“#”,用于做模糊匹配,其中“*”用于匹配一个单词,“#”用于匹配多个单词(可以是零个)例如”abc.#”匹配”abc.def.ghi”,”abc.*”只匹配”abc.def”
headers:根据发送的消息内容中的headers属性进行匹配
RabbitMQ中实现RPC的机制是:
- 客户端发送请求(消息)时,在消息的属性(MessageProperties,在AMQP协议中定义了14中properties,这些属性会随着消息一起发送)中设置两个值replyTo(一个Queue名称,用于告诉服务器处理完成后将通知我的消息发送到这个Queue中)和correlationId(此次请求的标识号,服务器处理完成后需要将此属性返还,客户端将根据这个id了解哪条请求被成功执行了或执行失败)
- 服务器端收到消息并处理
- 服务器端处理完消息后,将生成一条应答消息到replyTo指定的Queue,同时带上correlationId属性
- 客户端之前已订阅replyTo指定的Queue,从中收到服务器的应答消息后,根据其中的correlationId属性分析哪条请求被执行了,根据执行结果进行后续业务处理
附件(代码)
https://pan.baidu.com/s/1i6sPxbf
最新文章
- jquery的bind跟on绑定事件的区别
- 【学习笔记】load-on-startup Servlet
- highchart 动态刷新(可用于制作股票时时走势)
- UWP的拖拽功能
- WCF消息拦截,利用消息拦截做身份验证服务
- atitit.解决struts2 SpringObjectFactory.getClassInstance NullPointerException
- 【Bootstrap基础学习】00 序
- Nginx架构的企业级应用
- HDU 4848
- 提示29. 怎样避免延迟加载或Load()阅读器问题
- 正式学习React( 三)
- H264源码分析(四)
- C# 开机自动启动程序
- 一个3D视频播放器的演示APK
- Oracle case 关键字的使用
- android学习ProgressBar的简单使用
- 00-翻译IdentityServer4的目的
- 解决docker主机配置了DaoCloud.io的加速后重启失败问题Failed to start Docker Application Container Engine
- C. Ayoub and Lost Array
- Verilog HDL按位操作符与归约操作符的区别
热门文章
- 2018-2-13-win10-UWP-RSS阅读器
- rpm2cpio - 从 RPM 软件包中提取 cpio 归档
- [BZOJ5073] [Lydsy1710月赛]小A的咒语 后缀数组+dp+贪心
- 人生苦短_我用Python_logging日志操作_011
- springBoot 连接数据库
- Shell输入命令时一些有用的快捷键
- 透明的UITableView
- mysql 8.0版本下载安装以及默认密码修改
- 【CF1256】Codeforces Round #598 (Div. 3) 【思维+贪心+DP】
- 10.18.1 linux文本编辑器vim