zoukankan      html  css  js  c++  java
  • RabbitMQ入门_08_所谓的点对点与发布订阅模型

    A. JMS 模型

    JMS 中定义了点对点和发布订阅两种消息模型,原来以为 AMQP 协议中 direct Exchange 对应点对点模型,topic Exchange 对应发布订阅模型,fanout Exchange 对应简化的发布订阅模型。可学习下来,发现根本不是那么一回事。

    实际上,用三种 Exchange 都可以实现点对点与发布订阅模型。

    点对点模型:

    • direct Exchange:创建队列A,通过任意绑定键绑定到 Exchange,消息发送使用相同的绑定键
    • fanout Exchange:创建队列A,绑定到 Exchange
    • topic Exchange:创建队列A,通过任意绑定键绑定到 Exchange,消息发送使用相同的绑定键

    发布订阅模型:

    • direct Exchange:创建多个队列,通过为每个队列设定多个绑定,也能实现相对复杂的发布订阅模型
    • fanout Exchange:创建多个队列,绑定到 Exchange,这是简化的发布订阅模型
    • topic Exchange:创建多个队列,通过带通配符的绑定键实现复杂而又灵活的发布订阅模型

    简而言之,AMQP 不按 JMS 那一套玩法玩。说白了,AMQP 中所有的队列都遵照 JMS 中的点对点模型,发布订阅实质上是通过 Exchange 的逻辑将消息复制到多个队列来实现的

    B. 好文推荐

    好的文章,几张图就能让你深入理解一个系统。推荐阅读:http://blog.csdn.net/lizhitao/article/details/47723105

    只拿一张图作分析:
    RabbitMQ pub/sub

    这是 RabbitMQ 实现发布订阅的逻辑图。每个订阅组订阅自己感兴趣的消息类型,它从一个独占的队列中获取这些消息。订阅组内部多个消费者共同分担这些消息的处理。消息发布者将消息发送到 Exchange,由 Exchange 负责将每条消息分发到正确的队列中(可能会同时分发到多个队列)。

  • 相关阅读:
    ELK 5.6.8 安装部署
    Port Forwarding in Windows
    python 压缩文件为zip后删除原文件
    Windows安装nginx服务
    redis 启动停止脚本
    使用sed替换指定文件指定行的指定文本
    auto和bool
    宽字符
    函数递归
    关于主机用户名显示为"-bash-4.1$"
  • 原文地址:https://www.cnblogs.com/gordonkong/p/6953361.html
Copyright © 2011-2022 走看看