RabbitMQ Exchange分类学习 渣渣翻译

  • Default Exchange

默认交换机是broker事先声明的一个无名字(空字符串)的直接交换机(direct Exchange),它有一个让它很有用或对一般简单应用很起作用的特点:每创建一个队列,都会以队列名称作为路由键(Route Key)被绑定到该交换机上。
   举个例子:创建队列“search-indexing-online”,AMQP broker会把“search-indexing-online”作为路由键,绑定到默认交换机上。因此,发送以“search-indexing-online”作为路由键的消息,会被路由到默认交换机(废话)。换句话说呢,默认交换机和队列直接进行消息传递。(直接用队列名进行路由指定,对于简单应用,用它就足够了)

  • Direct Exchange

直接交换机:通过消息的路由键,向队列传递消息。理论上,被用在单播路由消息上(后边就理解是啥玩意了),看一下它怎么工作吧:

  1. 一个队列以K作为路由键 绑定到直接交换机
  2. 一个新消息以路由键R到达直接交换机,如果K=R,就会被路由到步骤1的队列上去。

直接交换机还有个常用的用途:通过轮询的方式广播分发给多个应用实例,这种时候要明白,这么做平衡了消费者的压力,而不是队列的压力。( in AMQP 0-9-1啥意思)

  • Fanout Exchange

扇形交换机:无视一切路由键,将消息发送给绑在它下面的所有队列。如果它下面绑了N个队列,来一条消息了,扇形交换机就会复制一份给所有下面的队列。所以,它常用来做广播功能。
    因为扇形交换机采用复制广播,所以以下场景格外合适:

  1. MMO网游的公告栏 通知栏
  2. 体育新闻网站为移动设备及时的更新推送分数
  3. 群聊中成员收发消息。因为AMQP没有内置在场(在线)的概念,所以XMPP更合适(XMPP是一种基于标准通用标记语言的子集XML的协议)
  • Topic Exchange

主题交换机:根据路由键和队列交换机绑定模式的匹配度,来路由消息。主题交换机经常用在随机性强的发布、订阅类型的场景。一般用来做广播。
    使用示例:

  1. 分发诸如销售网点一类特殊地点相关的数据
  2. 处理多任务后台进程
  3. 股票价格或者其他金融数据更新
  4. 话题性新闻
  5. 处理不同的云服务
  6. 分发针对每个系统的软件发布
  • Headers Exchange

头部交换机: 用来路由那些拥有相对于使用路由键,更适合放在头部的多个属性的消息。它无视路由键,而是获取路由的头部。如果消息头部的值和路由匹配,就会通过。
    很多情况下,一个队列会绑定多个header到头部交换机,这时候,broker需要开发者提供多个头信息以及或与非关系。或与非,通过配置“x-match”来实现,“Any”就是或,“All”就是与。明白吗?
    头部交换机可以看作是增强型直接交换机。因为它们更加精确的匹配到头部,当路由键不是字符串,而是整形、哈希等的时候,头部交换机可以当做直接交换机来用。

时间: 2024-07-29 23:09:51

RabbitMQ Exchange分类学习 渣渣翻译的相关文章

5、RabbitMQ - Exchange之 fanout \ 【direct 关键字发送】 \ topic

pytho系列之 RabbitMQ - Exchange几种模式 RabbitMQ中,所有生产者提交的消息都由Exchange来接受,然后Exchange按照特定的策略转发到Queue进行存储 RabbitMQ提供了四种Exchange:fanout, direct, topic, headerheader模式在实际使用中较少,本文只对前三种模式进行比较.性能排序:fanout > direct >> topic .比例大约为11:10:6 六.关键字发送 exchange type =

文本分类学习 (七)支持向量机SVM 的前奏 结构风险最小化和VC维度理论

前言: 经历过文本的特征提取,使用LibSvm工具包进行了测试,Svm算法的效果还是很好的.于是开始逐一的去了解SVM的原理. SVM 是在建立在结构风险最小化和VC维理论的基础上.所以这篇只介绍关于SVM的理论基础. 目录: 文本分类学习(一)开篇 文本分类学习(二)文本表示 文本分类学习(三)特征权重(TF/IDF)和特征提取        文本分类学习(四)特征选择之卡方检验 文本分类学习(五)机器学习SVM的前奏-特征提取(卡方检验续集) 文本分类学习(六)AdaBoost和SVM(残)

机器学习之多分类学习

一.问题描述 现实中常遇到多分类学习任务,有些二分类学习方法可直接推广到多分类,但在更多情况下,我们是基于一些基本策略,利用二分类学习器来解决多分类问题. 假设有N个类别C1,C2,......,CN,多分类学习的基本思路是“拆解法”,即将多分类任务拆分为若干个二分类任务求解.具体来说,先对问题进行拆分,然后为拆出 的每个二分类任务训练一个分类器.在测试的时候,对这些分类器的预测结果进行集成以获得最终的多分类结果.因此,如何对多分类任务进行拆分是关键.这里 主演介绍三种经典的拆分策略:一对一(O

RabbitMQ之Exchange分类

消息队列_RabbitMQ-0004.深入RabbitMQ之分类告警/并行执行/RPC响应?

应用场景: 1. 通知,针对发送事件的描述,内容可以是消息的日志,也可以是真实的报告通知给另一个程序或者管理员. 说明: 首先选择交换机,如果选择fanout交换机,则需要为每种告警传输类型(邮件/微信/手机/短信)创建队列,但同时也带来坏处就是每个消息都会发送到所有队列,导致告警消息发生时,被报警消息淹没,如果选择topic交换机,则可为其创建四种严重级别告警info/warning/problem/citical,但如果使用fanout类型交换机消息会发送到所有这四个级别队列,如果使用dir

深度学习论文翻译解析(五):Siamese Neural Networks for One-shot Image Recognition

论文标题:Siamese Neural Networks for One-shot Image Recognition 论文作者: Gregory Koch   Richard Zemel Ruslan Salakhutdinov 论文地址:https://www.cs.cmu.edu/~rsalakhu/papers/oneshot1.pdf 声明:小编翻译论文仅为学习,如有侵权请联系小编删除博文,谢谢! 小编是一个机器学习初学者,打算认真研究论文,但是英文水平有限,所以论文翻译中用到了Goo

UFLDL深度学习教程翻译之自我学习

一.概述 假设我们有足够强大的学习算法,得到较好结果的其中一种最靠谱的方法是给算法提供更多的数据.这验证了在机器学习的那句格言:"有时候获胜的不是谁有最好的算法,而是谁有最多的数据." 也许有人总能得到有标记的数据,但这么做成本很高.特别地,研究人员已经采用极致的工具例如AMT(亚马逊土耳其机器人)来得到大量训练集.尽管拥有大量的人们人工标记的数据相比拥有大量的研究人员的工程性质的特征已经迈进了一步,但还能做的更好.特别地,自我学习以及无监督特征学习的方法是说,如果我们让我们的算法从无

野兽的Angular Api 学习、翻译及理解 - - $sce 和 $sceDelegate

野兽的ng api学习 -- $sce 和 $sceDelegate $sce $sce 服务是AngularJs提供的一种严格上下文逸出服务. 严格上下文逸出服务(翻译水平有限,较渣...) 严格上下文逸出(SCE)是一种需要在一定的语境中导致AngularJS绑定值被标记为安全使用语境的模式.由用户通过ng-bind-html绑定任意HTML语句就是这方面的一个例子.我们称这些上下文语境为特权或者SCE. 下面代码是简化了的ngBindHtml实现(当然,这不是完整版ngBindHtml源码

mahout分类学习和遇到的问题总结

这段时间学习Mahout有喜有悲,在这里首先感谢樊哲老师的指导,下面列出关于这次Mahout分类的学习和遇到的问题,还请大家多多提出建议:(所有文件操作都使用是在hdfs上边进行的). (本人用的环境是Mahout0.9+hadoop-2.2.0) 一.首先将预分类文件转换为序列化化存储: 下边图片列出的是使用的20newsgroup数据(我使用的linux上的eclipse,然后在eclipse上边安装的eclipse-hadoop插件),数据图片如下: 然后编写java代码将此20newsg