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

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                [TOC] # 1. 什么是重復消費 **1. 什么是重復消費** 重復消費是指:由同一個生產者生產的消息,所有的消費者接收到的消息都是一模一樣的。 <br/> 為了方便演示消息被重復消費的效果,參考 cloud-stream-rabbitmq-consumer8802 消費者模塊再構建一個 cloud-stream-rabbitmq-consumer8803 消費者模塊,源碼中已經提供。 <br/> 先啟動 cloud-stream-rabbitmq-provider8801 生產者模塊生產消息,然后分別啟動 8802 消費者 和 8803 消費者。 <br/> 訪問8801生產者生產消息:http://localhost:8801/sendMessage ``` 生產者:014c1223-fa7a-4df5-bd45-778097074a4c 生產者:d82097cd-d461-48b2-901a-399122e4469a 生產者:3f6ac994-7c33-46c1-bc8a-248eee8510e5 8802消費者:014c1223-fa7a-4df5-bd45-778097074a4c 8802消費者:d82097cd-d461-48b2-901a-399122e4469a 8802消費者:3f6ac994-7c33-46c1-bc8a-248eee8510e5 8803消費者:014c1223-fa7a-4df5-bd45-778097074a4c 8803消費者:d82097cd-d461-48b2-901a-399122e4469a 8803消費者:3f6ac994-7c33-46c1-bc8a-248eee8510e5 ``` 可見 8802 消費者 與 8803 消費者接收到的消息是一模一樣的,這就是消息被重復消費的問題。 <br/> **2. 消費被重復消費的原因** 消息之所以被重復消費,是因為Stream定義不屬于同一組的消費者是可以重復消費消息的。默認是不分組的。 <br/> **3. 為什么要避免重復消費** 在生產實際中,比如在如下場景中,訂單系統我們做集群部署,都會從RabbitMQ中獲取訂單信息,那<mark>如果一個訂單同時被兩個服務獲取到,那么就會造成數據錯誤,產生兩次結賬</mark>。我們得避免這種情況。這時我們就可以使用Stream中的<mark>消息分組</mark>來解決。 ![](https://img.kancloud.cn/bc/04/bc04682525a32132f388c826a83eaa5f_1102x402.jpg) 注意在Stream中<mark>處于同一個組中的多個消費者是競爭關系,就能夠保證消息只會被其中一個應用消費一次。不同組是可以全面消費的(重復消費)</mark>。 <br/> # 2. 解決重復消費問題 <mark>處于同一個組中的多個消費者是競爭關系,就能夠保證消息只會被其中一個應用消費一次。不同組是可以全面消費的(重復消費)</mark>。 <br/> 將 8802 消費者 和 8803 消費者 分在同一個組`group: atguiguA`內即可實現消息不被重復消費。 ``` #在兩個消費端做如下配置 spring.cloud.stream.bindings.input.group: atguiguA #分組 ``` <br/> 訪問8801生產者生產消息:http://localhost:8801/sendMessage ``` 生產者:c84ffd99-1f90-46ea-add6-ae36147e3f50 生產者:e525446e-3bf6-4efc-a0d9-30355261a1ff 生產者:fe83b854-50f7-4c43-9995-5f9aa5420621 生產者:fd6b30a9-f3da-4334-9fd9-c767a56ba1a4 生產者:84e232a9-49bd-4293-944f-5d2e11933e90 生產者:d9387e40-74f7-47a9-9965-12f30258701a 8802消費者:c84ffd99-1f90-46ea-add6-ae36147e3f50 8802消費者:fe83b854-50f7-4c43-9995-5f9aa5420621 8802消費者:84e232a9-49bd-4293-944f-5d2e11933e90 8803消費者:e525446e-3bf6-4efc-a0d9-30355261a1ff 8803消費者:fd6b30a9-f3da-4334-9fd9-c767a56ba1a4 8803消費者:d9387e40-74f7-47a9-9965-12f30258701a ``` 可見 8802 消費者 與 8803 消費者接收到的消息是完全不同的,這就解決了消息被重復消費的問題。
                  <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>

                              哎呀哎呀视频在线观看