rabbitmq 某佇列的訊息有60個時,消費者對應的程式碼居然跑不成功
正常情況下,生產者與消費者的程式碼都跑起來,才開始執行業務,你生產訊息,我快速消費訊息的。
在解決這個問題的時候,https://mp.csdn.net/postedit/80662904, 偶然發現了這個坑,如題。
背景:一個佇列對應20個消費者。有很多個佇列,channel 數量200左右, 一個消費者對應一個channel。
問題: 消費者的程式碼沒有啟動,現在一個佇列已經有訊息60個了。 現要啟動消費者時,啟動報錯,且造成訊息的數量有問題。
圖可能不是很直觀,說明一下, 一個佇列20個消費者,正常來說,在啟動消費者程式碼的時候,每個消費者對應一個新的channel,
每當一個消費者訂閱一個訊息時,拿到訊息,就去幹活了。
日誌現在報,有消費者在繫結channel的時候,繫結到別人的channel。
思路: 之前的思路遍歷所有佇列,給每個佇列生成20個消費者,每個消費者指定一個channel的時候,便去訂閱訊息。
conn.createChannel();
消費者建立指定新的channel;
channel.basicConsume(queue, autoAck, "myConsumerTag", new DefaultConsumer(getChannel())
消費者拿到 channel,便訂閱訊息。
故這樣,所有消費者還沒指定channel, 就有消費者拿到訊息去幹活了, 故就啟動報錯了。
啟動報錯不暫停的情況下,經發現訊息,數量不對,且訊息消費混亂。
rabbitmq原碼追綜,沒有搞懂,消費者建立新的channel,為什麼是之前消費者繫結的,重複引用。
改造: 所有消費者都指定好channel, 才一起訂閱訊息。 這樣channel肯定不會重複。
相關推薦
rabbitmq 某佇列的訊息有60個時,消費者對應的程式碼居然跑不成功
正常情況下,生產者與消費者的程式碼都跑起來,才開始執行業務,你生產訊息,我快速消費訊息的。在解決這個問題的時候,https://mp.csdn.net/postedit/80662904, 偶然發現了這個坑,如題。背景:一個佇列對應20個消費者。有很多個佇列,channel
C#第十週任務之最後一項之建立一個如下的窗體,並在窗體上放置一個選單、一個工具欄控制元件。選單內容如第二個圖所示。工具欄上有兩個按鈕,分別對應“開啟文字檔案”、“儲存文字檔案”。選單和工具欄具體功能實現可
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq;
一個執行緒多個handler會有多少個looper,looper如何區分handler,會不會導致訊息錯亂。
面試題: 問題1:一個執行緒中初始化多個handler,會產生多少個looper? 問題2:如果只有一個looper,looper如何區分handler,handler傳送了訊息會不會導致Looper錯亂,最終不知道誰處理。 1 一個執行緒中初始化多個handler,會
有五個學生,每個學生有3門課的成績, 從鍵盤輸入以上資料(包括姓名,三門課成績), 輸入的格式:如:zhagnsan,30,40,60計算出總成績, 並把學生的資訊和計算出的總分數高低順序存放在磁碟文
有五個學生,每個學生有3門課的成績, 從鍵盤輸入以上資料(包括姓名,三門課成績), 輸入的格式:如:zhagnsan,30,40,60計算出總成績, 並把學生的資訊和計算出的總分數高低順序存放在磁碟檔案"stud.txt"中。 1:定義一個描述學生的類2定義一個操作學生的工
SQL不同伺服器資料庫之間資料操作(當在一個伺服器的某張表中有資料更新時,將更新值通過觸發器插入到另一個伺服器的指定表中)
第一步:在建立觸發器的伺服器上建立連結伺服器 建立連結伺服器有兩種方法:1.通過SQL語言建立,2.通過資料庫管理工具建立,下面分別進行詳細介紹: 1.通過SQL語言建立 通過SQL語言建立連結伺服器方法 2.通過資料庫管理工具建立(這裡以SQL SER
一個類有兩個方法,其中一個是同步的,另一個是非同步的; 現在又兩個執行緒A和B,請問:當執行緒A訪問此類的同步方法時,執行緒B是否能訪問此類的非同步方法?
一個類有兩個方法,其中一個是同步的,另一個是非同步的;現在又兩個執行緒A和B,請問:當執行緒A訪問此類的同步方法時,執行緒B是否能訪問此類的非同步方法? 答案:可以 驗證 package com.my.test2; public class ClassA { public syn
sql算某段時間有幾個星期一,取本月所有的週三, 取上個月所有的週三 etc
sql算某段時間有幾個星期一 DECLARE @t TABLE(dt DATETIME) DECLARE @dtStart DATETIME DECLARE @dtEnd DATETIME SET @dtStart='2014-10-01' SET @dtEnd='201
一個jar包裡有多個main,指定執行某一個main
如果一個jar中含有多個主程式,而你沒有配置預設主程式,或者想要執行指定主程式,則可以通過如下命令執行:java -cp example03-1.0-SNAPSHOT.jar com.alan.HelloWorld-cp <目錄和 zip/jar 檔案的類搜尋路徑>
RecketMQ-同一個group下有多個Topic,訊息能傳送到Topic中,但無法被監聽到
問題描述:現有多個應用,傳送和監聽訊息使用的GROUP為同一個,在該GROUP下面有多個TOPIC,往其中一個TOPIC傳送訊息
(待做例子)問題描述: el-tab 下有2個路由,其中第1個路由設置了 beforeRouteLeave,點擊 el-tab 第2個tab時,樣式直接跟過去了(預期結果是:樣式不到第二個tab上,beforeRouteLeave允許跳轉後才到第二個tab上)
last filter cond 結果 tick 允許 代碼 his 過去 解決: 經過以上分析,強制賦值應該在前次賦值而且DOM已經刷新完畢之後進行。可以使用$nextTick,以下是代碼: handleTabClick (tab) {
題目:判斷101-200之間有多少個素數,並輸出所有素數
[] bool ole enum print 輸出 static ber while 1 public class PrimeNumber{//100-200直接有多少素數 2 public static void main(String[] args){
面試題3:在一個長度為n的數組裏的所有數字都在0到n-1的範圍內。 數組中某些數字是重復的,但不知道有幾個數字是重復的。也不知道每個數字重復幾次。請找出數組中任意一個重復的數字。 例如,如果輸入長度為7的數組{2,3,1,0,2,5,3},那麽對應的輸出是第一個重復的數字2。
length value 如果 while 返回 sys public ret || package siweifasan_6_5; /** * @Description:在一個長度為n的數組裏的所有數字都在0到n-1的範圍內。 * 數組中某些數字是重復的,
有多個按鈕,點擊一個變色,點擊另一個變色,原來的恢復顏色的方法
click dcl 多個 cti 方法 fault tar span 變色 <a class="btn btn-default changChick" onclick="changChick(this)">高</a> <a class="btn
java中如何知道一個字符串中有多少個字,把每個字打印出來,舉例
有一個 url ont chapter 書籍 whole mar strong posit (視頻下載) (全部書籍) 9.6 About string,"I am a teacher",這個字符串中有多少個字,且分別把每個字打印出來。 /*本題的思路就是,當我有
服務器兩個網卡,插兩根網線,卻有三個ip,求解,這是什麽梗
1.9 網線 13.10 靜態ip 分別是 虛擬 type 3.1 ima 2018-09-23公司的一臺HP的服務器上,兩個網卡設置,插了兩個網線,但是卻有三個ip。不解,希望來個大神指點迷津如下圖第一個圖是該機器上的網卡,兩個網卡和一個回環接口的 第二幅圖是第一個網卡的
有n個整數,使前面各數順序向後移m個位置,最後m個數變成前面m個數。寫一函式:實現以上功能,在主函式中輸入n個數和輸出調整後的n個數。
import java.util.Scanner; public class Main { public static void main(String[] args){ Scanner sc = new Scann
有N個學生,每個學生的資料包括學號、姓名、3門課的成績,從鍵盤輸入N個學生的資料,要求打印出3門課的總平均成績,以及最高分的學生的資料(包括學號、姓名、3門課成績)
import java.util.Scanner; public class Main { public static void main(String[] args){ Scanner sc = new Sca
當xlsx中有多個sheet,讀取其中一個sheet
以下讀取方法主要是自己認為比較簡單的方式 如果知道sheet_name,直接 import pandas as pd pd.read_excel(data_file,sheet_name) 獲取sheet_names的方法 import openpyxl wb = openpyxl.
假定我們有3個程式,每個程式花費80%的時間進行I/O,20%的時間使用CPU
2 假定我們有3個程式,每個程式花費80%的時間進行I/O,20%的時間使用CPU,每個程式的啟動時間和其需要使用CPU進行計算機的分鐘數如表所示 程式編號 啟動時間 &nb
數列極限在使用單調有界準則時,避不開的找單調
若為了證明極限存在,決定採用單調有界準則,那麼就需要找出,單調,有界 現總結集中判斷單調的方法 (1)直接用與相減比較大小關係,這應該是最簡單的 (2)可以考慮採用數學歸納法,證明第一項 第二項滿足關係,假設第n項和第n-1項滿足關係,證明n+1和第n項也滿足關係 不過