<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                [TOC] # 1. 使用鏡像的原因 如果 RabbitMQ 集群中只有一個 Broker 節點,那么該節點的失效將導致整體服務的臨時性不可用,并且也可能會導致消息的丟失。可以將所有消息都設置為持久化,并且對應隊列的durable屬性也設置為true,但是這樣仍然無法避免由于緩存導致的問題:因為消息在發送之后和被寫入磁盤井執行刷盤動作之間存在一個短暫卻會產生問題的時間窗。通過 publisherconfirm 機制能夠確保客戶端知道哪些消息己經存入磁盤,盡管如此,一般不希望遇到因單點故障導致的服務不可用。 <br/> 引入鏡像隊列(Mirror Queue)的機制,可以將隊列鏡像到集群中的其他 Broker 節點之上,**如果集群中的一個節點失效了,隊列能自動地切換到鏡像中的另一個節點上以保證服務的可用性**。 <br/> # 2. 搭建步驟 **1. 啟動三臺集群節點** **2. 隨便找一個節點添加 policy** ![](https://img.kancloud.cn/df/ca/dfca892e7e6e6903157fcb05ffe21601_1896x961.jpg) ![](https://img.kancloud.cn/55/11/55116d2fc7cdd1b227c6d012b9e21523_1485x256.jpg) **3. 生成者,方便測試** ```java import com.rabbitmq.client.Channel; import com.rabbitmq.client.Connection; import com.rabbitmq.client.ConnectionFactory; public class Producer { private static final String QUEUE_NAME = "mirrior.my.queue"; public static void main(String[] args) throws Exception { // 1. 創建一個連接工廠 ConnectionFactory factory = new ConnectionFactory(); factory.setHost("192.168.0.109"); factory.setUsername("admin"); factory.setPassword("admin"); // 2. channel 實現了自動 close 接口 自動關閉 不需要顯示關閉 try (Connection connection = factory.newConnection(); Channel channel = connection.createChannel()) { // 生成一個隊列 channel.queueDeclare(QUEUE_NAME, false, false, false, null); String message = "hello world"; // 發送一個消息 channel.basicPublish("", QUEUE_NAME, null, message.getBytes()); System.out.println("消息發送完畢"); } } } ``` **4. 測試** (1)啟動生產者,得到隊列信息如下,node3為備份。 ![](https://img.kancloud.cn/e5/e9/e5e9d4d62648adae1d8cdb33cee21705_1540x416.jpg) (2)將node1停掉,node2變成了備份。 ```shell [root@node1 ~]# rabbitmqctl stop_app ``` ![](https://img.kancloud.cn/89/a8/89a8d5e91adba57b70a8ce0b28a711b7_1461x405.jpg) **5. 結論** 就算整個集群只剩下一臺機器了 依然能消費隊列里面的消息,說明隊列里面的消息被鏡像隊列傳遞到相應機器里面了。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看