1. 程式人生 > >Rabbitmq學習之路4-Federation

Rabbitmq學習之路4-Federation

上一節學習了cluster,使得我們可以在一個cluster中同步各種訊息,不過有時候我們需要把一個cluster的訊息同步到另一個cluster中,比如線下測試,模仿使用者真實資料。

      federation外掛是一個在不需要cluster,而在brokers之間傳輸訊息的高效能外掛,federation外掛可以在brokers或者cluster之間傳輸訊息,連線的雙方可以使用不同的users和virtual hosts,或者雙方的rabbitmq和erlang的版本不一致,federation外掛使用AMQP協議通訊,可以接受不連續的傳輸。

      federation外掛允許你配置一個exchanges federation或者queues federation。一個exchange/queues federation允許你從一個或者多個upstream接受資訊(就是遠端的exchange/queues或者其他brokers

),一個federation exchange可以路由訊息到一個本地queue中,一個federation queue可以使一個本地的consumer接受從upstream queue過來的訊息。

下面開始使用federation外掛,首先需要開啟federation外掛

rabbitmq-plugins enable rabbitmq_federation
rabbitmq-plugins enable rabbitmq_federation_management
      當你在一個cluster中使用federation外掛,所有在叢集中的nodes都需要安裝federation外掛。

federation的配置一共有三個層次:

Upstreams - 每個upstream定義怎麼連線到其他broker
Upstream sets - 把每一個upstream設定在一個組中,使upstreams使用federation。
Policies - each policy selects a set of exchanges, queues or both, and applies a single upstream or an upstream set to those objects.

實際上,在最簡單的使用情況下,你可以忽略已經存在的upstream設定,因為有一個隱含的預設upstream叫做“all”,他會新增所有的upstream。

       upstreams和upstream set都是例項的引數,就像exchanges、queues、virtual host都有他們自己的特有的parameters和policies一樣。可以通過三種方式設定parameter和policy:rabbitmqctl、http api、ui。

實驗環境

##ubuntu12.04ubuntuTest01的資料自動複製到ubuntuTest02
10.20.112.26 ubuntuTest01
10.20.112.27 ubuntuTest02

1 首先確保兩臺機器的federation外掛已經安裝,參照上面步驟。

  2.1 建立exchange:test.exchange,使用預設配置

       UI操作:Exchanges->Add a new exchange

       在rabbitmq中會有一些預設的exchange,建立完畢後如圖:

  2.2 建立queue:test.queue,繫結到test.exchange,key使用test。

       UI操作:Queues->Add a new queue

       繫結到test.exchange,並設定key

       UI操作:Queues->All queues(test.queue[單擊])->Bindings

  2.3 建立upstream:upstream1

       UI操作:Admin->Federation Upstreams->Add a new upstream

  2.4 建立Parameters:mqcluster

       UI操作:Admin->Federation Upstreams->Parameters

  2.5 建立policy:mypolicy

       UI操作:Admin->Policies->Add / update a policy

  2.6 狀態圖


   2.7  觀察26上面的連線