Main entity(主要实体)

Message Queue(消息队列)
消息队列是消息存储和分发实体,每个消息队列都是独立的
Exchange(交换机)
交换机接受来自生产者应用程序的消息,并根据预先安排的标准将这些消息路由到消息队列,交换是匹配和路由引擎。
Routing Key(路由key)
路由key是交换机可用于决定如何路由消息的虚拟地址。
Message Flow (消息流)

消息由一组属性和不透明内容构成,
Functional Specification
Message and Content
消息是中间件路由和排队系统的处理的原子单元,消息携带一个有内容头,内容体和一组属性。消息可能持久,消息可能具有优先级,服务器不能修改他接受的消息主体,可以向消息内容头添加,但是不能修改和删除
Virtual Hosts
虚拟主机包括其自己的名称空间,一组交换,消息队列以及所有关联的对象,每个连接必须与单个虚拟主机相关联
Exchange
交换是虚拟主机内的消息路由代理。可以将单个消息并行路由到多个消息队列,这创造了多个独立使用的消息实例
Direct Exchange Type(直接交换类型)
直接交换类型的工作原理如下:
- 消息队列使用路由密钥K绑定到交换机。
- 发布者向交换机发送带有路由密钥R的消息。
- 如果K = R,则将消息传递给消息队列。
使用场景
直连交换机经常用来循环分发任务给多个工作者(workers)。当这样做的时候,我们需要明白一点,在AMQP 0-9-1中,消息的负载均衡是发生在消费者(consumer)之间的,而不是队列(queue)之间

Fanout Exchange Type (扇出交换类型)
工作原理如下:
扇出交换机(funout exchange)将消息路由给绑定到它身上的所有队列,而不理会绑定的路由键。如果N个队列绑定到某个扇型交换机上,当有消息发送给此扇型交换机时,交换机会将消息的拷贝分别发送给这所有的N个队列。扇型用来交换机处理消息的广播路由(broadcast routing)
使用场景
- 大规模多用户在线(MMO)游戏可以使用它来处理排行榜更新等全局事件
- 体育新闻网站可以用它来近乎实时地将比分更新分发给移动客户端
- 分发系统使用它来广播各种状态和配置更新
- 在群聊的时候,它被用来分发消息给参与群聊的用户

Topic Exchange Type (主体交换类型)
工作原理如下:
- 消息队列使用路由模式P绑定到交换机。
- 发布者向交换机发送带有路由密钥R的消息。
- 如果R匹配P,则将消息传递到消息队列
路由规则:
路由模式遵循与路由密钥相同的规则,并且*匹配单个路由密钥单词和#匹配零个或多个单词。因此路由模式*.stock.#匹配路由密钥usd.stock和eur.stock.db但不是stock.nasdaq
使用场景
- 分发有关于特定地理位置的数据,例如销售点
- 由多个工作者(workers)完成的后台任务,每个工作者负责处理某些特定的任务
- 股票价格更新(以及其他类型的金融数据更新)
- 涉及到分类或者标签的新闻更新(例如,针对特定的运动项目或者队伍)
- 云端的不同种类服务的协调
- 分布式架构/基于系统的软件封装,其中每个构建者仅能处理一个特定的架构或者系统。
Headers Exchange Type (头交换类型)
工作原理如下:
- 消息队列绑定到交换机,其中包含要包含标头的参数表匹配该绑定以及它们应该保留的值。不使用路由密钥。
- 发布者向交易所发送消息,其中'headers'属性包含一个表
名称和价值观。 - 如果headers属性与使用的参数匹配,则消息将传递到队列
队列绑定了
