- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
张路由表,路由表中存储着
张路由表,路由表中存储着 Message Queue所需消息的限制
RabbitMQ
RabbitMQ 的几种典型使用场景
AMQPAMQP 协议是一个高级抽象层消息通信协议,
RabbitMQ 是 AMQP 协议的实现。它主要包括以下组件:
1.Server(broker): 接受客户端连接,实现 AMQP 消息队列和 路由功能的进程。
2.Virtual Host: 其实是一个虚拟概念,类似于权限控制组,一
个Virtual Host里面可以有若干个 Exchange和Queue,但是
权限控制的最小粒度是 Virtual Host 3.Exchange:接受生产者发送的消息,并根据 Binding规则将
消息路由给服务器中的队列。 ExchangeType 决定了 Exchange direct、Fanout和To pic三种,不同类型的 Exchange路由的 行为是不一样的。
路由消息的行为,例如,在 RabbitMQ
路由消息的行为,例如,在 RabbitMQ
中, ExchangeType 有
4.Message Queue:消息队列,用于存储还未被消费者消费的 消息。
5.Message:由Header和Body组成,Header是由生产者添加
的各种属性的集合,包括 Message是否被持久化、由哪个
Message Queue接受、优先级是多少等。 而Body是真正需要 传输的 APP 数据。
6.Binding:Binding 联系了 Exchange 与 Message Queue。
Exchange在与多个 Message Queue发生Binding后会生成
条件即Binding Key。当Exchange收到Message时会解析其
Header 得到 Routing Key , Exchange 根据 Routing Key 与
Exchange Type将 Message路由至U Message Queued Binding
Key 由 Consumer 在 Binding Exchange 与 Message Queue时指 定,而 Routing Key由Producer发送 Message时指定,两者
的匹配方式由 Exchange Type 决定。
7.Connection:连接,对于RabbitMQ而言,其实就是一个位于
客户端和 Broker 之间的 TCP 连接。
8.Channel:信道,仅仅创建了客户端到 Broker之间的连接后,
客户端还是不能发送消息的。 需要为每一个 Connection 创建
Channel,AMQP 协议规定只有通过 Channel 才能执行 AMQP
的命令。一个 Connection可以包含多个 Channel。之所以需
要Channel,是因为TCP连接的建立和释放都是十分昂贵的, 如果一个客户端每一个线程都需要与 Broker 交互,如果每 个线程都建立一个 TCP 连接,暂且不考虑 TCP 连接是否浪 费,就算操作系统也无法承受每秒建立如此多的 TCP 连接。
RabbitMQ建议客户端线程之间不要共用 Channel,至少要保
证共用 Channel 的线程发送消息必须是串行的,但是建议尽 量共用 Connection。
9.Command:AMQP 的命令,客户端通过 Command 完成与
AMQP 服务器的交互来实现自身的逻辑。例如在 RabbitMQ
ConnectionFactory(); factory.setHost(localhost);
ConnectionFactory(); factory.setHost(localhost);
中,客户端可以通过 publish 命令发送消息, txSelect 开启 个事务, txCommit 提交一个事务。
在了解了 AMQP 模型以后,需要简单介绍一下 AMQP 的协 议栈, AMQP 协议本身包括三层: 1.Module Layer ,位于协 议最高层,主要定义了一些供客户端调用的命令,客户端可 以利用这些命令实现自己的业务逻辑,例如,客户端可以通 过 queue.declare 声明一个队列,利用 consume 命令获取一个 队列中的消息。
2.Session Layer,主要负责将客户端的命令发送给服务器, 在 将服务器端的应答返回给客户端,主要为客户端与服务器之 间通信提供可靠性、同步机制和错误处理。
3.Transport Layer ,主要传输二进制数据流,提供帧的处理、 信道复用、错误检测和数据表示。
RabbitMQ 使用场景场景 1:单发送单接收使用场景: 简单的
发送与接收,没有特别的处理。 Producer: impor
您可能关注的文档
最近下载
- 医师访谈记录.pdf VIP
- Unit 4 School Life 第3-4课时Reading and Rriting 课件 中职高一学年英语高教版基础模块1.ppt
- 最新中药饮片质量标准通则(试行).doc VIP
- 医学临床三基(输血学)-输血免疫学基础(精选试题).pptx VIP
- 我们的大脑的教学课件.ppt VIP
- 洞察世间智慧:哲学伴随我成长课件.ppt VIP
- 超星网课《汽车之旅》超星尔雅答案2023章节测验答案.doc VIP
- 老年人继承法培训课件.pptx VIP
- 科学湘科版二年级上册全册课件.pptx
- 第7课全球航路的开辟和欧洲早期殖民扩张【中职专用】《世界历史》(高教版2023基础模块).pptx VIP
文档评论(0)