RabbitMQ實(shí)戰(zhàn)-基礎(chǔ)概念

1 為什么是你? RabbitMQ

RabbitMQ是一個(gè)開(kāi)源的消息代理和隊(duì)列服務(wù)器,通過(guò)普通協(xié)議在完全不同的應(yīng)用之間共享數(shù)據(jù),使用Erlang語(yǔ)言編寫(xiě),并且基于AMQP協(xié)議.

1.1 大廠們共同的抉擇

  • 滴滴昂羡、美團(tuán)胸懈、頭條、去哪兒、藝龍...

1.2 得天獨(dú)厚的強(qiáng)勢(shì)

  • 開(kāi)源,性能優(yōu)秀,穩(wěn)定性有保障
  • 提供可靠性消息投遞模式(confirm), 返回模式 ( return )
  • 與Spring AMQP完美整合,API豐富
  • 集群模式豐富,表達(dá)式配置逛薇,HA模式,鏡像隊(duì)列模型
  • 保證數(shù)據(jù)不丟失的前提做到高可靠性肋杖、可用性

2 高性能之源

  • Erlang語(yǔ)言 最初在于交換機(jī)領(lǐng)域的架構(gòu)模式屏鳍,這樣使得RabbitMQ在Broker之間進(jìn)行數(shù)據(jù)交互的性能是非常優(yōu)秀的
  • Erlang的優(yōu)點(diǎn): Erlang有著和原生Socket一樣的延遲

3 AMQP協(xié)議

  • AMQP全稱: Advanced Message Queuing Protocol 高級(jí)消息隊(duì)列協(xié)議
  • AMQP定義
    是具有現(xiàn)代特征的二進(jìn)制協(xié)議伊约。 是一個(gè)提供統(tǒng)一消息服務(wù)的應(yīng)用層標(biāo)準(zhǔn)高級(jí)消息隊(duì)列協(xié)議,是應(yīng)用層協(xié)議的一個(gè)開(kāi)放標(biāo)準(zhǔn)孕蝉,為面向消息的中間件設(shè)計(jì)

4 協(xié)議模型

協(xié)議模型

5 AMQP核心概念

  • Server: 又稱Broker, 接受客戶端的連接屡律,實(shí)現(xiàn)AMQP實(shí)體服務(wù)
  • Connection: 連接,應(yīng)用程序與Broker的網(wǎng)絡(luò)連接
  • Channel:網(wǎng)絡(luò)信道,幾乎所有的操作都在Channel中進(jìn)行降淮,Channel是進(jìn)行消息讀寫(xiě)的通道超埋。客戶端可建立多個(gè)Channel,每個(gè)Channel代表一個(gè)會(huì)話任務(wù)
  • Message:消息佳鳖,服務(wù)器和應(yīng)用程序之間傳送的數(shù)據(jù)霍殴,由Properties和Body組成。Properties可以對(duì)消息進(jìn)行修飾系吩, 比如消息的優(yōu)先級(jí)来庭、延遲等高級(jí)特性; Body則就是消息體內(nèi)容
  • Virtual host:虛擬地址,用于進(jìn)行邏輯隔離穿挨,最上層的消息路由.一個(gè)Virtual Host里面可以有若干個(gè)Exchange和Queue,同一個(gè)Virtual Host里面不能有相同名稱的Exchange或Queue
  • Exchange:交換機(jī)月弛,接收消息肴盏,根據(jù)路由鍵轉(zhuǎn)發(fā)消息到綁定的隊(duì)列
  • Binding: Exchange和Queue之間的虛擬連接,binding中可以包含routing key
  • Routing key:一個(gè)路由規(guī)則帽衙,虛擬機(jī)可用它來(lái)確定如何路由一個(gè)特定消息
  • Queue:也稱為Message Queue,消息隊(duì)列菜皂,保存消息并將它們轉(zhuǎn)發(fā)給消費(fèi)者

6 RabbitMQ整體架構(gòu)與消息流轉(zhuǎn)

image

image

7 安裝

7.1 本節(jié)食用指南

  • 官網(wǎng)地址: http://www.rabbitmq.com/
  • 預(yù)先準(zhǔn)備:安裝Linux必要依賴包
  • 下載RabbitMQ必須安裝包
  • 配置文件修改

7.2 下載及安裝

7.2.1 Ubuntu環(huán)境

Linux環(huán)境參數(shù)
下載頁(yè)

image

image

image

image

image

image

image

ps -ef|grep rabbit 查看rabbitmq的啟動(dòng)情況

7.2.2 CentOS7.3

對(duì)于初學(xué)者,推薦使用一鍵式的RPM安裝方式

  • 注意與 erlang 版本的對(duì)應(yīng)關(guān)系!


    image

由于筆者使用3.6.5 版本.查看對(duì)應(yīng) erlang

image

  • 下載 erlang 環(huán)境
    image
  • 下載完畢


    image
  • rpm時(shí)報(bào)錯(cuò),缺少依賴


    image
  • 解決問(wèn)題


    yum -y install openssl openssl-devel
  • 再次 rpm


    image
  • 下載 rabbitmq rpm 文件


    image
  • 下載完畢


    image
  • 安裝報(bào)錯(cuò)


    image
  • 下載 socat
    image
  • 安裝 socat


    image
  • 再次安裝 rebbitmq 即可.


    image

配置文件

  • 默認(rèn)端口號(hào)


    image
  • 編輯用戶訪問(wèn)權(quán)限.
    image
  • 修改如下,暫時(shí)本地可訪問(wèn)


    image

7.2.3 macOS

  • 下載安裝RabbitMQ
  // 更新brew資源
  brew update
  // 執(zhí)行安裝
  brew install rabbitmq

MQ的安裝目錄在 /usr/local/Cellar/rabbitmq

  • 安裝RabiitMQ的可視化監(jiān)控插件
 // 切換到MQ目錄,注意你的安裝版本可能不是3.7.15
   cd /usr/local/Cellar/rabbitmq/3.7.15/
   // 啟用rabbitmq management插件
   sudo sbin/rabbitmq-plugins enable rabbitmq_management
  • 配置環(huán)境變量
 sudo vi /etc/profile
 //加入以下兩行
 export RABBIT_HOME=/usr/local/Cellar/rabbitmq/3.7.4
 export PATH=$PATH:$RABBIT_HOME/sbin
 // 立即生效
 source /etc/profile
  • 后臺(tái)啟動(dòng)rabbitMQ
  // 后臺(tái)啟動(dòng)
  rabbitmq-server -detached  
  // 查看狀態(tài)
  rabbitmqctl status 
  // 訪問(wèn)可視化監(jiān)控插件的界面
  // 瀏覽器內(nèi)輸入 http://localhost:15672,默認(rèn)的用戶名密碼都是guest,登錄后可以在Admin那一列菜單內(nèi)添加自己的用戶
  rabbitmqctl stop 關(guān)閉

8 基本使用

8.1 常用命令

  • 啟動(dòng)服務(wù)
rabbitmq-server start &
  • 停止服務(wù)
rabbitmqctl stop_ app
  • 管理插件
rabbitmq-plugins enable rabbitmq_ management
  • 訪問(wèn)地址
    http://192.168.11.76:15672/

8.2 重啟操作

image

image

image

啟動(dòng)成功

9 quickstart - 消息的生產(chǎn)與消費(fèi)

9.1 基本構(gòu)建缺一不可

  • ConnectionFactory:獲取連接工廠
  • Connection:一個(gè)連接
  • Channel:數(shù)據(jù)通信信道,可發(fā)送和接收消息
  • Queue:具體的消息存儲(chǔ)隊(duì)列
  • Producer & Consumer生產(chǎn)和消費(fèi)者

9.2 實(shí)操演示

  • Pro


    image
  • Con


    image

    由于是Con端才創(chuàng)建有對(duì)列,所以必須先啟動(dòng)Con端,再啟動(dòng)Pro端!
    分別啟動(dòng)運(yùn)行

10 命令行與管控臺(tái)常規(guī)操作

10.1 常用命令行

  • rabbitmqctl stop_ app: 關(guān)閉應(yīng)用
  • rabbitmqctl start app: 啟動(dòng)應(yīng)用
  • rabbitmqctl status: 節(jié)點(diǎn)狀態(tài)
  • rabbitmqctl add_ user username password:添加用戶
  • rabbitmqctl list users:列出所有用戶
  • rabbitmqctl delete_ user username:刪除用戶
  • rabbitmqctl clear permissions -p vhostpath username:清除用戶權(quán)限
  • rabbitmqctl list user_ permissions username:列出用戶權(quán)限
  • rabbitmqctl change_ password username newpassword:修改密碼
  • rabbitmqctl set permissions -p vhostpath username
  • ".""."".*": 設(shè)置用戶權(quán)限
  • rabbitmqctl add vhost vhostpath:創(chuàng)建虛擬主機(jī)
  • rabbitmqctl list vhosts: 列出所有虛擬主機(jī)
  • rabbitmqctl list_ permissions -p vhostpath:列出虛擬主機(jī)上所有權(quán)限
  • rabbitmqctl delete vhost vhostpath:刪除虛擬主機(jī)
  • rabbitmqctl list queues:查看所有隊(duì)列信息
  • rabbitmqctl -p vhostpath purge_ queue blue:清除隊(duì)列里的消息
  • rabbitmqctl reset:移除所有數(shù)據(jù),要在rabbitmqctl stop_ app之后使用
  • rabbitmqctl join_cluster < clusternode > [- -ram] :組成集群命令
  • rabbitmqctl cluster status: 查看集群狀態(tài)
  • rabbitmqctl change_ cluster_ node type disc | ram 修改集群節(jié)點(diǎn)的存儲(chǔ)形式
  • rabbitmqctl forget_ cluster_ node [--offline]忘記節(jié)點(diǎn)(摘除節(jié)點(diǎn))
  • rabbitmqctl rename_cluster_node oldnode1 newnode1 [oldnode2] [newnode2...]修改節(jié)點(diǎn)名稱

實(shí)操

  • 查看端口占用


    image
  • ctl命令


    image
image

10.2 管控臺(tái)的管理

  • 主界面


    image
  • 主界面-監(jiān)測(cè)全部信息


    image
  • 主界面-當(dāng)前節(jié)點(diǎn)的狀態(tài)


    image
  • 主界面-當(dāng)前節(jié)點(diǎn)一些存儲(chǔ)路徑


    image
  • 主界面-端口號(hào)集錦


    image
  • 主界面-配置文件的導(dǎo)入導(dǎo)出


    image
  • 管控臺(tái)connection界面


    image
  • 管控臺(tái)channel界面


    image
  • 管控臺(tái)queues界面


    image
  • 管控臺(tái)Exchanges界面
    image
  • 管理員界面-添加用戶
    image
  • 管理員界面-添加虛擬主機(jī)


    image
  • 管理員界面-集群管理


    image

13 Exchange交換機(jī)

Exchange:接收消息,并根據(jù)路由鍵轉(zhuǎn)發(fā)消息所綁定的隊(duì)列

image

藍(lán)色 - Send Message:把消息投遞到交換機(jī),由路由鍵路由到指定的隊(duì)列

13.1 交換機(jī)屬性

除交換機(jī)類型外厉萝,在聲明交換機(jī)時(shí)還可以附帶許多其他的屬性恍飘,其中最重要的幾個(gè)分別是:

  • Name:交換機(jī)名稱
  • Type:交換機(jī)類型direct、topic谴垫、 fanout章母、 headers
  • Durability:是否需要持久化。如果持久化翩剪,則RabbitMQ重啟后乳怎,交換機(jī)還存在
  • Auto-delete:當(dāng)最后一個(gè)綁定到Exchange 上的隊(duì)列刪除后,自動(dòng)刪除該Exchange
  • Internal:當(dāng)前Exchange是否于RabbitMQ內(nèi)部使用肢专,默認(rèn)為False

13.2 交換機(jī)類型

交換機(jī)主要包括如下4種類型:

Direct exchange(直連交換機(jī))
Fanout exchange(扇型交換機(jī))
Topic exchange(主題交換機(jī))
Headers exchange(頭交換機(jī))
另外RabbitMQ默認(rèn)定義一些交換機(jī):

默認(rèn)交換機(jī)
amq.* exchanges
還有一類特殊的交換機(jī):Dead Letter Exchange(死信交換機(jī))

13.2.1 Direct Exchange

所有發(fā)送到DE的消息被轉(zhuǎn)發(fā)到RouteKey中指定的Queue

注意: Direct模式可以使用RabbitMQ自帶的Exchange: default Exchange,所以不需要將Exchange進(jìn)行任何綁定(binding)操作,消息傳遞時(shí)舞肆,RouteKey必須完全匹配才會(huì)被隊(duì)列接收,否則該消息會(huì)被拋棄.

13.2.2 Direct Exchange原理示意圖

image

13.2.3 Direct Exchange實(shí)操演示

  • Pro


    image
  • Con


    image

注意路由key保持一致!,分別啟動(dòng)


image
image

image

image

13.2.2 Topic exchange

盡管使用直接交換改進(jìn)了我們的系統(tǒng)博杖,它仍然有局限性 - 不能做基于多個(gè)標(biāo)準(zhǔn)的路由.

在我們的日志系統(tǒng)中椿胯,我們可能不僅要根據(jù)嚴(yán)重性訂閱日志,還要根據(jù)發(fā)出日志的源來(lái)訂閱日志剃根。你可能從syslog unix工具中了解這個(gè)概念哩盲,它根據(jù)嚴(yán)重性(info / warn / crit ...)和facility(auth / cron / kern ...)來(lái)路由日志。

這會(huì)給我們很多靈活性 - 我們可能想要監(jiān)聽(tīng)來(lái)自'cron'的關(guān)鍵錯(cuò)誤以及來(lái)自'kern'的所有日志狈醉。

為了在我們的日志記錄系統(tǒng)中實(shí)現(xiàn)這一點(diǎn)廉油,我們需要了解更復(fù)雜的主題交換機(jī).

  • *可以匹配一個(gè)單詞

  • 可以匹配零個(gè)或多個(gè)單詞。

  • 所有發(fā)送到Topic Exchange的消息會(huì)被轉(zhuǎn)發(fā)到所有關(guān)心RouteKey中指
    定Topic的Queue上

  • Exchange將RouteKey和某Topic進(jìn)行模糊匹配苗傅,此時(shí)隊(duì)列需要綁定一個(gè)Topic

13.2.2.1 實(shí)例1

image

在這個(gè)例子中抒线,我們將發(fā)送所有描述動(dòng)物的消息。消息將與包含三個(gè)單詞(兩個(gè)點(diǎn))的routing key一起發(fā)送.
routing key中的第一個(gè)單詞描述速度渣慕,第二顏色嘶炭,第三是物種:“<speed>。<color>逊桦。<species>”眨猎。

我們創(chuàng)建了三個(gè)綁定:Q1綁定了綁定鍵“* .orange.”,Q2綁定了“.*.rabbit”和“l(fā)azy.G烤”

這些綁定可以總結(jié)為:

  • Q1對(duì)所有橙色動(dòng)物感興趣
  • Q2希望聽(tīng)到關(guān)于兔子的一切睡陪,以及關(guān)于懶惰動(dòng)物的一切

routing key設(shè)置為“quick.orange.rabbit”的消息將傳遞到兩個(gè)隊(duì)列。消息“l(fā)azy.orange.elephant”也將同時(shí)發(fā)送給他們.
另一方面

  • “quick.orange.fox”只會(huì)轉(zhuǎn)到第一個(gè)隊(duì)列
  • 而“l(fā)azy.brown.fox”只會(huì)轉(zhuǎn)到第二個(gè)隊(duì)列
  • “l(fā)azy.pink.rabbit”將僅傳遞到第二個(gè)隊(duì)列一次,即使它匹配兩個(gè)綁定
  • “quick.brown.fox”與任何綁定都不匹配兰迫,因此它將被丟棄信殊。

如果我們違背我們的約定并發(fā)送帶有一個(gè)或四個(gè)單詞的消息,例如“orange” or “quick.orange.male.rabbit”逮矛,會(huì)發(fā)生什么?好吧,這些消息將不會(huì)匹配任何綁定,因此將丟失.

另一方面鸡号,“l(fā)azy.orange.male.rabbit”转砖,雖然它有四個(gè)單詞须鼎,也會(huì)匹配最后一個(gè)綁定,并將被傳遞到第二個(gè)隊(duì)列府蔗。

實(shí)例圖

image

實(shí)操演示

  • Pro


    image
  • Con


    image
  • 啟動(dòng)消費(fèi)者:


    image

    image
  • 啟動(dòng)生產(chǎn)者:


    image

    消費(fèi)端收到了消息

  • 修改匹配格式,理論上只能接受前兩個(gè)消息


    image
  • 注意在管控臺(tái),先將之前的匹配綁定取消!


    image

    image
  • 顯然僅能接受前兩個(gè)消息


    image

小結(jié)

主題交換機(jī)功能強(qiáng)大晋控,可以像其他交換機(jī)一樣運(yùn)行。
當(dāng)隊(duì)列綁定“P粘啵”(哈希)綁定key時(shí) - 它將接收所有消息赡译,而不管routing key - 就像在fanout交換機(jī)一樣
當(dāng)特殊字符“*”(星號(hào))和“#”(哈希)未在綁定中使用時(shí)不铆,主題交換機(jī)的行為就像直接交換機(jī)一樣蝌焚。

13.2.3 Fanout Exchange

  • 不處理路由鍵,只需要簡(jiǎn)單的將隊(duì)列綁定到交換機(jī)上
  • 發(fā)送到交換機(jī)的消息都會(huì)被轉(zhuǎn)發(fā)到與該交換機(jī)綁定的所有隊(duì)列上
  • Fanout交換機(jī)轉(zhuǎn)發(fā)消息是最快的


    image

實(shí)操演示

  • Con


    image
  • Pro


    image
  • 啟動(dòng)消費(fèi)端


    image
  • 不需要routing key


    image
  • 啟動(dòng)生產(chǎn)者后接收到的消息


    image

14 綁定(Binding)

  • Exchange和Exchange誓斥、Queue之間的連接關(guān)系
  • Binding中可以包含RoutingKey或者參數(shù)

15 Queue-消息隊(duì)列

  • 消息隊(duì)列只洒,實(shí)際存儲(chǔ)消息數(shù)據(jù)
  • Durability: 是否持久化,Durable: 是劳坑,Transient: 否
  • Auto delete:如選yes,代表當(dāng)最后一個(gè)監(jiān)聽(tīng)被移除之后,該Queue會(huì)自動(dòng)被刪除.

16 Message-消息

  • 服務(wù)器和應(yīng)用程序之間傳送的數(shù)據(jù)
  • 本質(zhì)上就是一段數(shù)據(jù)毕谴,由Properties和Payload ( Body )組成

16.1 常用屬性

delivery mode、headers (自定義屬性)
content_ type. content_ encoding. priority
correlation id. reply to

expiration - 過(guò)期時(shí)間

這里就牽涉到RabbitMQ的TTL機(jī)制

message_ id
timestamp. type. user id. app_ id. cluster id

實(shí)操演示

  • Con


    image
  • 啟動(dòng)消費(fèi)端


    image
  • Pro,注意TTL為10s


    image
  • 接著啟動(dòng)Pro,Con接收消息


    image
  • 現(xiàn)在5條消息,10s后為0消息全部已清除


    image

    image

17 總結(jié)

首先講解互聯(lián)網(wǎng)大廠為什么選擇RabbitMQ? RabbitMQ的高性能之道是如何做到的距芬?什么是AMPQ高級(jí)協(xié)議涝开?AMPQ核心概念是什么?RabbitMQ整體架構(gòu)模型是什么樣子的框仔?RabbitMQ消息是如何流轉(zhuǎn)的舀武?RabbitMQ安裝與使用命令行與管控臺(tái),RabbitMQ消息生產(chǎn)與消費(fèi)离斩,RabbitMQ交換機(jī)詳解银舱,RabbitMQ隊(duì)列、綁定捐腿、虛擬主機(jī)纵朋、消息等...
通過(guò)本文的學(xué)習(xí),希望大家對(duì)RabbitMQ有一個(gè)整體的感知!

參考

RabbitMQ官網(wǎng)
mac + RabbitMQ 安裝

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末茄袖,一起剝皮案震驚了整個(gè)濱河市操软,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌宪祥,老刑警劉巖聂薪,帶你破解...
    沈念sama閱讀 206,311評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件家乘,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡藏澳,警方通過(guò)查閱死者的電腦和手機(jī)仁锯,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)翔悠,“玉大人业崖,你說(shuō)我怎么就攤上這事⌒畛睿” “怎么了双炕?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,671評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)撮抓。 經(jīng)常有香客問(wèn)我妇斤,道長(zhǎng),這世上最難降的妖魔是什么丹拯? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,252評(píng)論 1 279
  • 正文 為了忘掉前任站超,我火速辦了婚禮,結(jié)果婚禮上乖酬,老公的妹妹穿的比我還像新娘死相。我一直安慰自己,他們只是感情好剑刑,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布媳纬。 她就那樣靜靜地躺著,像睡著了一般施掏。 火紅的嫁衣襯著肌膚如雪钮惠。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,031評(píng)論 1 285
  • 那天七芭,我揣著相機(jī)與錄音素挽,去河邊找鬼。 笑死狸驳,一個(gè)胖子當(dāng)著我的面吹牛预明,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播耙箍,決...
    沈念sama閱讀 38,340評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼撰糠,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了辩昆?” 一聲冷哼從身側(cè)響起阅酪,我...
    開(kāi)封第一講書(shū)人閱讀 36,973評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后术辐,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體砚尽,經(jīng)...
    沈念sama閱讀 43,466評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評(píng)論 2 323
  • 正文 我和宋清朗相戀三年辉词,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了必孤。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,039評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡瑞躺,死狀恐怖敷搪,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情隘蝎,我是刑警寧澤购啄,帶...
    沈念sama閱讀 33,701評(píng)論 4 323
  • 正文 年R本政府宣布襟企,位于F島的核電站嘱么,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏顽悼。R本人自食惡果不足惜曼振,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蔚龙。 院中可真熱鬧冰评,春花似錦、人聲如沸木羹。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,259評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)坑填。三九已至抛人,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間脐瑰,已是汗流浹背妖枚。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留苍在,地道東北人绝页。 一個(gè)月前我還...
    沈念sama閱讀 45,497評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像寂恬,于是被迫代替她去往敵國(guó)和親续誉。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • 什么叫消息隊(duì)列初肉? 消息(Message)是指在應(yīng)用間傳送的數(shù)據(jù)酷鸦。消息可以非常簡(jiǎn)單,比如只包含文本字符串,也可以更復(fù)...
    Agile_dev閱讀 2,368評(píng)論 0 24
  • 利用RabbitMQ集群橫向擴(kuò)展能力井佑,均衡流量壓力属铁,讓消息集群的秒級(jí)服務(wù)能力達(dá)到百萬(wàn),Google曾做過(guò)此類實(shí)驗(yàn)躬翁;...
    有貨技術(shù)閱讀 3,454評(píng)論 0 1
  • http://liuxing.info/2017/06/30/Spring%20AMQP%E4%B8%AD%E6%...
    sherlock_6981閱讀 15,870評(píng)論 2 11
  • 應(yīng)用場(chǎng)景 異步處理 場(chǎng)景說(shuō)明:用戶注冊(cè)后焦蘑,需要發(fā)注冊(cè)郵件和注冊(cè)短信,傳統(tǒng)的做法有兩種: 1.串行的方式 2.并行的...
    lijun_m閱讀 1,808評(píng)論 0 3
  • 關(guān)于消息隊(duì)列盒发,從前年開(kāi)始斷斷續(xù)續(xù)看了些資料例嘱,想寫(xiě)很久了,但一直沒(méi)騰出空宁舰,近來(lái)分別碰到幾個(gè)朋友聊這塊的技術(shù)選型拼卵,是時(shí)...
    中v中閱讀 1,967評(píng)論 0 20