RabbitMQ基础知识(三)--交换器、虚拟主机和消息持久化

生产者发送的消息如何到达队列

(1)队列通过路由键绑定到交换器上
(2)消息发送至代理服务器时,消息会拥有一个路由键(可以为空)
(3)RabbitMQ将消息的路由键和绑定的路由键进行匹配
(4)若匹配,消息会被投递到对应队列;

交换器的类型

背景:用于将消息分发给绑定到一个交换器上的多个队列
(1)direct:消息的路由键与绑定的路由键完全匹配,消息就会被投递至该队列
(2)fanout:与路由键无关,当交换器设置为此模式时,消息会被发送给所有绑定当前交换器的队列
(3)topic:支持消息的路由键与绑定的路由键进行模糊匹配,设置此模式时,绑定的路由键使用“”和“#”即可。
说明 :“
”匹配特定位置的任意文本;“#”匹配所有规则
(4)header:与direct规则完全一致,但是性能差很多,所以不常用

虚拟主机vhost

(1)是RabbitMQ权限机制的基本单位
(2)在各个实例间提供逻辑分离,将RabbitMQ的客户区分开来,允许不同程序安全保密的运行,也避免了队列和交换器的命名冲突
(3)vhost之间是绝对隔离的,这样既保证了安全性,又有可移植性
(4)在RabbitMQ集群中创建1个vhost时,整个集群都会创建该vhost。这样避免了为基础架构中的每一层创建一个RabbitMQ服务器,也避免了为每一层创建不同的集群。

消息持久化

1.背景:程序或者服务重启后仍需要将未分发的消息进行重新发送
2.消息持久化的必要条件
(1)将消息的投递模式选项设置为即持久化模式
(2)消息发送到的持久化的交换器中
(3)消息最终到达的队列是持久化的
3.如何应用消息持久化
背景:消息持久化会降低性能
(1)选择关键消息做持久化
(2)运行RabbitMQ集群,非持久化集群和持久化集群做负载均衡,保证了持久化消息的处理不会减慢非持久化消息处理的性能

事务的应用

背景:发布消息的操作不会返回任何信息给生产者,我们在持久化时无法确认消息是否被持久化到磁盘,我们无法知道消息是否在持久化之前就已经丢失了,所以
(1)与数据库中的事务概念不同
(2)把确认代理服务器RabbitMq收到消息,以及将消息路由到所订阅的队列中这一系列行为包装到一个事务中
(3)通过把信道设置为事务模式后,先发送确认消息,在发送AMQP命令
,若第一条发送成功了,则继续发送之后的命令;发送完成所有命令后即可提交事务;若发送第一条发送失败了,则不会发送之后的命令

发送方确认模式

背景:事务会降低Rabbit的性能,还会使生产者的应用程序产生同步
(1)将信道设置成confirm模式,这种模式只能通过重新创建信道来关闭该模式
(2)当消息进入confirm模式的信道,该消息就会被指派一个唯一ID,当消息被投递给指定的队列后,信道会发送一个发送方确认(包含消息唯一ID)给生产者;当消息丢失是,RabbitMQ会发送一个未确认消息给生产者,告知消息已丢失。
(3)由于没有回滚的概念,此模式更加轻量级。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,657评论 6 505
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,889评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,057评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,509评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,562评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,443评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,251评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,129评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,561评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,779评论 3 335
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,902评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,621评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,220评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,838评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,971评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,025评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,843评论 2 354

推荐阅读更多精彩内容

  • 第九章 老大的电话让秀兰情绪瞬间失控了,她不知道该怎么办才好,于是她只好哭出来,小卖部里的老太太不在,不知道去了哪...
    六个小矮人阅读 468评论 29 25
  • 生活中,我们有的朋友爱好写作,但不管怎样写,总是写不出自己满意的东西来,绞尽了脑汁不说还花费了时间,自己看...
    独秀郛邑间阅读 441评论 0 5
  • 这几日又多读了些前人的WHV经历。这事就像小马过河,不能道听途说。跟大多数事情一样,做了才知道,既没有那么容易,也...
    珂粒阅读 361评论 0 1