日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

消息中间件之RabbitMq

發布時間:2023/12/14 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 消息中间件之RabbitMq 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

消息中間件是系統間異步交互的重要手段之一,目前常用的消息中間件很多,包括Rabbitmq、Activemq、Rocketmq、IBM MQ、kafka等,這些都是成熟的技術體系,理論上,只要是可以存儲數據的軟件,都可用來做消息中間件,比如redis,再比如各種數據庫,當然軟件設計都有其定位,我們也沒必要做舍本求末的事情。

下面主要說其中的RabbitMq

RabbitMq是用Erlang語言編寫的實現了高級消息隊列協議(AMQP:Advanced Message Queue Protocol)的開源的消息中間件。

主要概念介紹

publisher:發布者,也可以稱producer生產者,負責推送消息到rabbitmq;

consumer:消費者,負責從rabbitmq消費消息;

vhost:虛擬機,一個rabbitmq進程可以有多個vhost,每個vhost互相隔離,可以單獨配置權限,類似mysql中得多個schema;

queue:消息隊列,具體存放消息的盒子;

exchange:交換機,producer發消息到rabbitmq不是直接發到queue的,而是通過exchange根據相應的規則路由到queue的;

bindingkey:exchange和queue的綁定關系叫bindingkey,一個exchange可以綁定多個queue(bindingkey可以相同也可以不同),一個queue也可以綁定到多個exchange(bindingkey可以相同也可以不同);

routingkey:producer發送消息到exchange,并指定routingkey,那么exchange就會把消息路由給bindingkey和routingkey能對應上的所有queue中(rabbitmq有多種exchange類型,不是都靠routingkey和bindingkey進行匹配路由的,后面會詳細介紹);

其簡單模型圖如下:

交換機(exchange)詳細介紹

RabbitMq交換機主要有四種,每一種交換機都有自己的路由規則:

直連交換機(Direct Exchange)

該交換機的作用簡單明了,就是將發送過來的消息,根據其指定的routingkey去匹配bindingkey,匹配上了(routingkey=bindingkey)就將消息發送到對應的queue中,如下圖所示,一個routingkey="key_a"的消息就會路由到queue01和queue02。

?

?

扇形交換機(Fanout Exchange)

扇形交換機會將消息路由到綁定在其上的所有隊列中,它不會去匹配routingkey和bindingkey,它是一個廣播路由,下圖中只要有消息發到該交換機,那么queue01、queue02、queue03都會收到消息。

主題交換機(Topic Exchange)

主題交換機跟上面說的直連交換機很相似,也是通過routingkey和bindingkey匹配路由消息的,不同點在于,直連交換機的匹配規則是routingkey=bindingkey,而主題交換機的匹配規則可以理解成routingkey like '%bindingkey%',也就是說主題交換機是模糊匹配,其具體匹配規則如下:

routingkey的定義跟java包的定義類似用"."分隔單詞,如user.log.info;

bindingkey的定義也是"."分隔,但是它可以擁有兩個通配符,一個為"*",匹配一個單詞,一個為"#",匹配零或多個單詞;

如下圖所示,routingkey="user.log.info"的消息可以路由到queue02和queue03;routingkey="process.log.error"的消息可以路由到queue01和queue03;routingkey="user.request.log"的消息可以路由到queue02。

?

頭交換機(Headers Exchange)

頭交換機的路由規則不依賴于routingkey和bindingkey的匹配關系,而是一種特殊的鍵值對匹配規則,具體規則為:

隊列queue和交換機exchange也有綁定關系,但是不叫bindingkey,而是通過一組鍵值對來綁定,其中有兩個特殊的參數:

x-match:any,表示當前組內鍵值對只要有一個能匹配到,消息就可以進來;

x-match:all,表示當前組內鍵值對必須全部匹配,消息才能進來;

publisher在發布消息時必須指定消息頭,頭交換機就會根據消息的消息頭來做路由匹配,例如:有一個消息頭為name:beijing的消息,可以路由到queue01;消息頭為name:shanghai,id:123的消息可以路由到queue01和queue02;消息頭為id:123的消息可以路由到queue01。

RabbitMq消息可靠性

1、RabbitMq可以分為磁盤節點和內存節點

內存節點:exchange、queue、vhost等元數據信息系都存在內存中,當然消息本身也只會在內存中,當服務器宕機重啟,將丟失所有的信息;

磁盤節點:元數據和消息都會持久化到磁盤,服務器宕機重啟可以自動恢復;

單機RabbitMq只能是磁盤節點,保證服務器宕機重啟后可以恢復數據;而在集群模式中,一般至少會保證有兩個磁盤節點和多個內存節點,既保證了數據的可靠性,又保證了服務器的性能。

2、數據發送到consumer后,消息會從隊列中移除,但是這個移除動作不是立馬完成,而是需要consumer ack后,默認情況下是自動ack,消息給到consumer就刪除,但是如果consumer處理消息失敗,消息就丟失了,所以如果消息很重要,也可以手動設置ack,確認消息處理成功后通知rabbitmq刪除該消息。

總結

以上是生活随笔為你收集整理的消息中间件之RabbitMq的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产美女自慰在线观看 | 亚洲国产欧美另类 | 成色视频 | 亚洲AV无码精品国产 | 久久免费成人 | 中文字幕在线免费观看视频 | 91福利影院| 在线免费小电影 | 亚洲黄片一区 | 人人妻人人做人人爽 | 亚洲AV无码国产精品国产剧情 | 欧美三级日本三级 | 99精品久久久久久中文字幕 | 337p日本欧洲亚洲大胆张筱雨 | 麻豆网站在线观看 | 无码一区二区三区免费 | 欧美一区二区三区久久精品 | 亚洲精品www | 国产综合精品一区二区三区 | 国产综合久久久久 | 露脸丨91丨九色露脸 | 无码人妻丰满熟妇啪啪欧美 | 中文字幕看片 | 亚洲午夜无码av毛片久久 | 亚洲欧美日韩图片 | 孕期1ⅴ1高h| 日韩熟女精品一区二区三区 | 国产精品欧美激情在线播放 | juliaann欧美二区三区 | 亚洲制服一区二区 | 男女污污视频在线观看 | 国产成人福利在线 | 国产乱子伦精品无码码专区 | 激情www| www.999热 | 欧美成人自拍视频 | 九月激情网 | 放几个免费的毛片出来看 | 日韩99 | 国产一区二区视频在线播放 | 国产成人在线一区二区 | 中国18videosex极品 | 免费精品无码AV片在线观看黄 | 国产日韩第一页 | 涩涩视频免费在线观看 | 国产欧美日韩专区发布 | 久久久久国产精品一区二区 | 国产精品美女久久久久久久 | 亚洲社区在线 | 国产欧美日韩精品一区 | 亚洲激情av在线 | 中文字幕一区二区久久人妻网站 | 亚洲成人www | 日日干夜夜草 | 蜜臀视频一区二区三区 | 欧美cccc极品丰满hd | 无码人妻熟妇av又粗又大 | 五月婷婷中文字幕 | 伦伦影院午夜理伦片 | 91亚洲天堂 | 天天视频黄色 | 大乳巨大乳j奶hd | 亚洲无套 | 日本精品区 | 日韩精品视频在线观看免费 | 啪啪激情网| 中文字幕系列 | 毛片网站在线 | 亚洲小说网 | 日韩中文字幕av电影 | av手机免费在线观看 | 欧美一区二区三区国产 | 自拍视频在线观看 | 成人动漫在线免费观看 | 欧亚成人av | 99热这里 | 中国老熟女重囗味hdxx | 男人的天堂在线观看av | 污网站免费 | 日韩精品一区二区三区视频 | 图片区 小说区 区 亚洲五月 | 免费99视频| 久久国产精品精品国产 | 韩日黄色片 | 天天综合天天综合 | 久久网免费视频 | 综合亚洲网 | 播播网色播播 | 国产精品伊人久久 | 成人免费无遮挡无码黄漫视频 | 六月婷婷av | 欧美一及片 | 97青草| 一区三区视频在线观看 | 欧美一区二区三区不卡视频 | 日韩美女一级片 | 久久精品一区二区国产 | 久草高清 | 四虎影视在线 |