<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>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                Fanout 這種類型非常簡單。正如從名稱中猜到的那樣,它是將接收到的所有消息廣播到它知道的所有隊列中。系統中默認就有些 Fanout exchange 類型。 ![](https://img.kancloud.cn/78/73/7873426d7cbd11af1d524806c6ff00d5_1572x538.jpg) <br/> 演示下圖的 Fanout 交換機。 ![](https://img.kancloud.cn/32/b2/32b28242cd01a895acf84c2555bee45f_1345x267.jpg) 步驟如下: **1. 生產者** ```java public class EmitLog { private static final String EXCHANGE_NAME = "logs"; public static void main(String[] argv) throws Exception { try (Channel channel = RabbitMQUtils.getChannel()) { /* * 聲明一個 exchange。 * exchangeDeclare(String var1, String var2) * var1: exchange名稱 * var2: exchange類型 */ channel.exchangeDeclare(EXCHANGE_NAME, BuiltinExchangeType.FANOUT); Scanner sc = new Scanner(System.in); System.out.println("請輸入信息."); while (sc.hasNext()) { String message = sc.nextLine(); /* * 發送一個消息。 * basicPublish(String var1, String var2, BasicProperties var3, byte[] var4) * var1: 發送到那個交換機 * var2: 隊列名稱(這里不用指定) * var3: 其他的參數信息 * var4: 發送的消息 */ channel.basicPublish(EXCHANGE_NAME, "", null, message.getBytes("UTF-8")); System.out.println(EmitLog.class.getSimpleName() + "[生產者發出消息]: " + message); } } } } ``` **2. 兩個消費者** (1)*`ReceiveLogs01`* ```java public class ReceiveLogs01 { private static final String EXCHANGE_NAME = "logs"; public static void main(String[] argv) throws Exception { Channel channel = RabbitMQUtils.getChannel(); channel.exchangeDeclare(EXCHANGE_NAME, BuiltinExchangeType.FANOUT); //臨時隊列 com.rabbitmq.client.AMQP.Queue.DeclareOk queue = channel.queueDeclare(); //臨時隊列名 String queueName = queue.getQueue(); //將隊列與交互機綁定 //queueBind(String var1, String var2, String var3) //var3參數是交換機與隊列綁定的標識,稱為routingkey(或binding key) channel.queueBind(queueName, EXCHANGE_NAME, ""); System.out.println(ReceiveLogs01.class.getSimpleName() + "[等待接收消息...]"); DeliverCallback deliverCallback = (consumerTag, delivery) -> { String message = new String(delivery.getBody(), "UTF-8"); System.out.println(ReceiveLogs01.class.getSimpleName() + "[接收到的消息]: " + message); }; channel.basicConsume(queueName, true, deliverCallback, consumerTag -> { }); } } ``` (2)*`ReceiveLogs02`* ```java public class ReceiveLogs02 { private static final String EXCHANGE_NAME = "logs"; public static void main(String[] argv) throws Exception { Channel channel = RabbitMQUtils.getChannel(); channel.exchangeDeclare(EXCHANGE_NAME, BuiltinExchangeType.FANOUT); com.rabbitmq.client.AMQP.Queue.DeclareOk queue = channel.queueDeclare(); String queueName = queue.getQueue(); channel.queueBind(queueName, EXCHANGE_NAME, ""); System.out.println(ReceiveLogs02.class.getSimpleName() + "[等待接收消息...]"); DeliverCallback deliverCallback = (consumerTag, delivery) -> { String message = new String(delivery.getBody(), "UTF-8"); System.out.println(ReceiveLogs02.class.getSimpleName() + "[接收到的消息]: " + message); }; channel.basicConsume(queueName, true, deliverCallback, consumerTag -> { }); } } ``` **3. 測試** 先啟動兩個消費者,然后啟動生產者并生產4條消息,控制臺輸出如下。 ``` -----------EmitLog生產者生產了4條消息----------- EmitLog[生產者發出消息]: 消息C1 EmitLog[生產者發出消息]: 消息C2 EmitLog[生產者發出消息]: 消息C3 EmitLog[生產者發出消息]: 消息C4 -----------ReceiveLogs01消費者收到了4條消息----------- ReceiveLogs01[接收到的消息]: 消息C1 ReceiveLogs01[接收到的消息]: 消息C2 ReceiveLogs01[接收到的消息]: 消息C3 ReceiveLogs01[接收到的消息]: 消息C4 -----------ReceiveLogs02消費者也收到了4條一模一樣消息----------- ReceiveLogs02[接收到的消息]: 消息C1 ReceiveLogs02[接收到的消息]: 消息C2 ReceiveLogs02[接收到的消息]: 消息C3 ReceiveLogs02[接收到的消息]: 消息C4 ``` **** 案例代碼:https://gitee.com/flymini/codes01/tree/master/rabbitmq_/com-learn-rabbitmq01
                  <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>

                              哎呀哎呀视频在线观看