1. 面向EDA(事件驅(qū)動(dòng)架構(gòu))的方式來設(shè)計(jì)你的消息

  2. AMQP routing key的設(shè)計(jì)

  3. RabbitMQ cluster搭建

  4. Mirror queue policy設(shè)置

  5. 兩個(gè)不錯(cuò)的RabbitMQ plugin 大型應(yīng)用插件(Sharding、Rederation)

  6. Queue鏡像失敗手動(dòng)同步

  7. 各集群配置同步方式(RabbitMQ export\import)

  8. 客戶端連接方式(盡量采用AMQP組來動(dòng)態(tài)鏈接)

  9. RabbitMQ 產(chǎn)線二次產(chǎn)品化封裝(消息補(bǔ)償、發(fā)送消息持久化、異常處理、監(jiān)控頁面、重復(fù)消息剔除)

1.面向EDA(事件驅(qū)動(dòng)架構(gòu))的方式來設(shè)計(jì)你的消息

在通常情況下你在使用消息中間件的時(shí)候,都是未經(jīng)設(shè)計(jì)的使用,你沒有把應(yīng)用架構(gòu)和系統(tǒng)架構(gòu)邊界搞清楚。消息中間件只是一個(gè)純粹的技術(shù)工具,當(dāng)你引入的時(shí)候是站在應(yīng)用架構(gòu)的角度引入的。這是架構(gòu)的角度,也是架構(gòu)的上帝視角,這樣你就不會(huì)用到最后發(fā)現(xiàn)越來越混亂,而且也無法結(jié)合軟件模式、方法論、最佳實(shí)踐來綜合提升系統(tǒng)的架構(gòu)能力。

EDA(Event Driven Architecture,EDA) 事件驅(qū)動(dòng)架構(gòu),它是一種用來在SOA或者M(jìn)icro service中進(jìn)行的架構(gòu)模式。它的好處有幾個(gè),柔性具有很高的伸縮性。

(具體參考本人的SOA架構(gòu)文章:SOA架構(gòu)設(shè)計(jì)經(jīng)驗(yàn)分享—架構(gòu)、職責(zé)、數(shù)據(jù)一致性

既然要EDA就要規(guī)劃好你當(dāng)前的系統(tǒng)邊界之內(nèi)有多少業(yè)務(wù)實(shí)體,這些實(shí)體是圍繞著領(lǐng)域模型而得來。所以這里不要很主觀的就定義一些你認(rèn)為的事件,這些事件要根據(jù)業(yè)務(wù)實(shí)體中的對象來設(shè)計(jì)。業(yè)務(wù)實(shí)體起碼是有唯一Identity的。比如,訂單、商品,圍繞著這些實(shí)體展開,訂單可能有幾個(gè)狀態(tài)是比較常用的,創(chuàng)建、支付