1. 程式人生 > >Activemq 預取指令的配置

Activemq 預取指令的配置

問題描述: 當一個MQ佇列裡已經有幾百條訊息,而沒有產生新訊息的時候,現在先開啟一個consumer去從佇列裡取訊息,可以正常取到,但是當想再開一個consumer的時候卻一條訊息也取不到,只有等有新的訊息生成的時候才可以取到。(其中consumer通過receive來獲取訊息,不過相信事件觸發回撥的方式也一樣)。難道這是activemq的BUG經過分析問題不是這樣的。 問題原因: 問題的原因,因為Activemq伺服器端為了加速指令分發,所以會根據consumer的配置來做prefetch也就是訊息預取,所以當開啟一個consumer的時候,訊息佇列裡的訊息都分配給了第一個consumer這樣,第二個再起來也不可能正常獲取沒有處理的指令,看著現像就想是不能支援多consumer。而新指令產生了,自然會分配給空閒的consumer。所以新指令可以正常給第二個consumer。這樣一分析,問題就出現在consumer的prefetchsize配置。 解決方式:
給consumer配置prefetchsize 方式1:在URI配置 failover://(tcp://localhost:61616)?cms.PrefetchPolicy.queuePrefetch=1
這樣配置就針對這個URI下的所有queue都生效。如果只想對某一個佇列來配置,可以用方式二在destination上配置方式如下
方式2:在destination配置 com.foo?consumer.prefetchSize=2
這樣就只對queue com.foo生效

相關推薦

Activemq 指令配置

問題描述: 當一個MQ佇列裡已經有幾百條訊息,而沒有產生新訊息的時候,現在先開啟一個consumer去從佇列裡取訊息,可以正常取到,但是當想再開一個consumer的時候卻一條訊息也取不到,只有等有新的訊息生成的時候才可以取到。(其中consumer通過receive來獲取

DPDK(10):報文處理中的指令(prefetcht0)

在DPDK的例子中報文處理時讀取報文內容時添加了指令預取命令(prefetcht0): /* * Read packet from RX queues */ for (i = 0; i < qconf->n_rx_port; i++) {

ActiveMQ 設定資料大小

在ActiveMQ中可以通過3中方式設定prefetchSize大小: 1、  tcp://localhost:61616?jms.prefetchPolicy.all=50 所有的目的地每次最大取5

4、多用類型常量,少用#define處理指令

報錯 作用域 生成 model 聲明 stat 指令 方法 類常量 摒棄: #define ANIMATION_DURATION 0.3 #define ERROR_MESSAGE @“ErrorMessage” 1)沒有常量的類型信息 2)假設此指令聲明在某個頭文件中

AngularJs指令配置參數scope詳解

便在 指令 getname 可選 獨立 con func tex 掌握 AngularJs最重要也是最難理解的模塊之一就是它的指令(directive)了,自定義指令配置有很多個參數,下面我只說說其中scope的配置極其含義。 scope表示指令的作用域,它有三個可選值:t

oc溫習六:處理指令

替換 port 區別 div war 找不到 能夠 預處理命令 ive 預處理:分析程序前先處理的語句,它可以識別散布在程序中的特定語句。所有的預處理語句都適用“#”開頭,這個符號必須是一行中的第一個非空字符。 預處理可以大概分為三類:文件包含、宏定義和條件編譯。 1

c#變量常量枚舉處理器指令知多少

cuc row cpe fck .com vmw 預處理 list boa %E6%B1%82%E5%8A%A9%E5%85%B3%E4%BA%8E%E6%96%B9%E6%B3%95%E7%9A%84%E9%87%8D%E5%86%99%E9%97%AE%E9%A2%98

處理指令

文件名 使用 ifdef 否則 ted 程序 itl endif err 預處理指令在編譯之前,由編譯器執行,預處理結果作為編譯器的輸入。主要功能:把其他文件包含到當前文件、定義符號常量和宏、程序代碼的條件編譯以及預處理指令的條件執行。預處理指令包括:#include, #

C#學習筆記:處理指令

copy erro log com 學習 tco endif href 指定 C#和C/C++一樣,也支持預處理指令,下面我們來看看C#中的預處理指令。 #region 代碼折疊功能,配合#endregion使用,如下: 點擊後如下: 條件預處理 條件預處

深入理解C語言的編譯指令之include

get http npe target info pdb tfs mar 語言 慫b促64u父猩84卵ml0http://www.facebolw.com/space/2101977 0俜垂屹17該性膠1http://tushu.docin.com/hmd622 6PD

C/C++處理指令#define,條件編譯#ifdefine

明顯 int 生效 cpp 這樣的 ffffff 給定 ron fde 本文主要記錄了C/C++預處理指令,常見的預處理指令如下: #空指令,無任何效果 #include包含一個源代碼文件 #define定義宏 #undef取消已定義的宏 #if如果給定條件為真,則編譯下面

Zookeeper + ActiveMQ 集群整合配置文檔

html cal 準備 下載 nod org stop 搭建 做的 一:使用ZooKeeper實現的MasterSlave實現方式,是對ActiveMQ進行高可用的一種有效的解決方案,高可用的原 理:使用ZooKeeper(集群)註冊所有的ActiveMQ Broker。只

Nginx中常用的指令配置詳解

Nginx中的rewrite指令的應用rewrite指令的作用:是做一些訪問匹配規則的判斷,從而實現相應的操作。location / {proxy_pass http://192.168.1.5if (-d $request_filename) {...........; 這裏的意思是訪問的如果是一個目錄

VS的一些鮮為人知小功能 C#的處理指令

添加 debug pub 沒有 邏輯運算符 code pre 一段 span 1、#define和#if、#elif、#else、#endif的結合使用 1 /// <summary>2018-08-11:#define和#if、#elif、#else、#e

c++ 處理指令#define, #endif...

第一個 ++ 空白字符 當前 def windows 源代碼 定義宏 else 常見的預處理指令有: # 空指令,無任何效果 # include 包含一個源代碼文件 #define 定義宏 #undef 取消已定義的宏 #if 如果給定條件為真,則編譯下面代碼 #ifdef

c#常用的處理器指令

顯示 編譯 提醒 禁止 fin 功能 使用 錯誤 erro 預處理器指令指導編譯器在實際編譯開始之前對信息進行預處理。所有的預處理器指令都是以 # 開始。 #define 預處理器指令創建符號常量。#define 允許您定義一個符號,這樣,通過使用符號作為傳遞給 #if 指

C# 處理指令

app processor framework war 配置 data- sys app1 RoCE C# 預處理指令 #if...else #define...undef #warning #error #pragma #pragma checksum

ActiveMQ SSL應用之三 ActiveMQ開啟SSL聯結器配置

一、主要內容 AcitveMQ通過修改配置檔案,開啟SSL聯結器。 二、操作步驟 tips:ActiveMQ的根目錄我們稱為${activemq.base}。 1、將上文生成的兩個檔案broker1.ks,borker1.ts,放在${activemq.base}/conf目錄

C/C++中的編譯指令

地方 efi def 允許 兩種 常量 打印 string 運算符 程序的編譯過程可以分為預處理、編譯、匯編三部分,其中預處理是首先執行的過程,預處理過程掃描程序源代碼,對其進行初步的轉換,產生新的源代碼提供給編譯器。預處理過程讀入源代碼之後,會檢查代碼裏包含的預處理指令,

C語言入門(廿二)之處理指令、巨集、條件編譯、檔案包含、typedef、const

預處理指令 什麼是預處理指令: 在我們的檔案翻譯成0和1之前做的操作我們稱之為預處理指令。一般情況預處理指令都是以#號開頭的。 巨集定義的格式 不帶引數的巨集定義: #define 巨集名 值 巨集定義的作用: