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 负责将每条消息分发到正确的队列中(可能会同时分发到多个队列)。

  • 相关阅读:
    Shared Memory in Windows NT
    Layered Memory Management in Win32
    软件项目管理的75条建议
    Load pdbs when you need it
    Stray pointer 野指针
    About the Rebase and Bind operation in the production of software
    About "Serious Error: No RTTI Data"
    Realizing 4 GB of Address Space[MSDN]
    [bbk4397] 第1集 第一章 AMS介绍
    [bbk3204] 第67集 Chapter 17Monitoring and Detecting Lock Contention(00)
  • 原文地址:https://www.cnblogs.com/gordonkong/p/6953361.html
Copyright © 2011-2022 走看看