如何知道mq隊列裡面有多少數據
⑴ MQGET從MQ隊列中是不是一次取一條數據
MQGET是逐條從隊列中將消息取出,相應的隊列中的消息遞減,樓主可以通過觀察隊列的隊列深度變化。
使用runmqsc 【隊列管理器】,這里以本地隊列為例dis ql(qname),可以看CURDEAPTH屬性
⑵ 如何獲取當前連接到消息隊列的連接數以及消息隊列的queue數
第一個參數是消息隊列對象的標識符。 第二個參數是消息隊列的控制方式: IPC_STAT 取出系統保存的消息隊列的msqid_ds數據,並將其存入參數buf指向的msqid_ds結構中。
⑶ 如何查看rabbitmq 隊列內容
由於種種原因,RabbitMQ到目前為止,官方還沒有實現優先順序隊列,只實現了Consumer的優先順序處理。 但是,迫於種種原因,應用層面上又需要優先順序隊列,因此需求來了:如何為RabbitMQ加入優先順序隊列特性。
⑷ mq 可以查看發送隊列深度么深度么
可以查看發送隊列深度。解決方法如下:
1、首先上傳ms03_unix.tar.Z到AIX伺服器,並執行解壓。# uncompress -c ms03_unix.tar.Z | tar xvf -。
⑸ 如何察看mq中queue的消息內容
工作中的一些體會:如何查看queue里的messages的content.
說實在的,MQ的東西很煩瑣,雖然很強大。可是中文的資料太少(當然中文版的MQ會帶些幫助文檔,不過都是垃圾);英文的太拗口(雖然我整天看英文的文檔,還是看不太懂;要不就是MQ太龐大了?)
反正我只是在工作中學了那麼一點點可憐的東西,就趕快寫出來了。
據我所知,是有兩種的方式來查看queue的content.
Prepare:
假設queue的名字叫做local.queue, queue manager的名字叫做 test.queue.manager,mq安裝在/opt/mqm下.
1.先確定queue的長度不是0.
$runmqsc test.queue.manager
dis ql('local.queue') curdepth
2 : dis ql('local.queue') curdepth
AMQ8409: Display Queue details.
QUEUE(local.queue) CURDEPTH(1)
如上所示,queue裡面是有一個message的,因為curdepth的長度為1.
2.查看queue的message的內容
第一種方式:使用/opt/mqm/samp/bin/amqsget
第二種方式:使用/opt/mqm/samp/bin/amqsbcg
共同點:
都是在命令後面先跟queue的名字,然後再跟queue manager的名字,如下
/opt/mqm/samp/bin/amqsget local.queue test.queue.manager
區別是:
前者只能查看短長度的message,並且會把message取出(還不是太確定後者);遇到長度稍微長一點的就會發出2080的error code.
$/opt/mqm/samp/bin/amqsget local.queue test.queue.manager
Sample AMQSGET0 start
MQGET ended with reason code 2080
Sample AMQSGET0 end
而後者則沒有這個限制;但是amqsbcg顯示的message很奇特,連二進制的都同時顯示
⑹ rocketmq mq 怎麼查看隊列中的數據
innodb_data_home_dir = /longxibendi/mysql/mysql/var/
#innodb_data_file_path = ibdata1:1G:autoextend
innodb_data_file_path = ibdata1:500M;ibdata2:2210M:autoextend #表空間
innodb_file_io_threads = 4 #io線程數
⑺ 請問用java連接MQ時,如何獲得某一個隊列管理器下所有隊列名稱。
引起這個問題一個很有可能的原因是隊列管理器在不正常停止後,雖然ps -ef | grep mq看不到此隊列管理器的進程,但此MQ隊列管理器的進程佔用的信號燈和共享內存卻沒有被釋放掉。解決辦法如下:
1. 先查看是否有此隊列管理器殘留的 信號燈和共享內存。命令如下:
ipcs -a | grep mq
2. 如果有,使用ipcrm命令清除 殘留的信號燈和共享內存,命令如下:
ipcrm -s <semphore id>
ipcrm -m <shared memory id >
3. 再次啟動MQ隊列管理器
⑻ mq如何查隊列管理器有什麼隊列
可以簡單的把隊列看作一個容器,用來存放消息。隊列按其定義來分,可以分成本地隊列、遠程隊列、別名隊列和模型隊列。其中本地隊列是真正意義上的隊列實體,可以用來存放消息。而遠程隊列和別名隊列只是一種隊列的定義,指向另一個隊列實體。其中遠程隊列指向的是其他隊列管理器中的隊列,而別名隊列指向的是本地隊列管理器中的隊列。模型隊列有一點特殊,它雖然本身只是一個隊列的定義,描述了模型的屬性,但是當打開模型隊列的時候,隊列管理其就會以這個定義為模型,創建一個本地隊列,被成為動態隊列。
一個隊列管理器可以管轄多個隊列。但對於一個隊列只能隸屬於其中的一個隊列管理器。所以隊列在其所隸屬於的隊列管理器只能有唯一的名字,不能於同一個管理器中的其他的隊列重名。當消息添加到隊列中是,其預設被添加到最後。刪除消息時從頭開始。
⑼ 請問我在activeMQ裡面放了很多隊列。如何用java來遍歷每個隊列得到每個隊列的狀態和每個隊列有多少跳記錄
activemq 只能拿出來遍歷,用監聽觸發局部變數,就可以知道有多少條信息,或者nowait方法 for循環遍歷也可以;
你隊列的狀態指的是什麼呢?
⑽ java如何獲取rabbitmq隊列中消息數量
下面是RabbitMQ的消息確認機制:「為了確保消息不會丟失,RabbitMQ支持消息確認機制。客戶端在接受到消息並處理完後,可以發送一個ack消息給RabbitMQ,告訴它該消息可以安全的刪除了。假如客戶端在發送ack之前意外死掉了,那麼RabbitMQ會將消息投遞到下一個consumer客戶端。如果有多個consumer客戶端,RabbitMQ在投遞消息時是輪詢的。RabbitMQ如何判斷客戶端死掉了?唯一根據是客戶端連接是否斷開。這里沒有超時機制,也就是說客戶端可以處理一個消息很長時間,只要沒斷開連接,RabbitMQ就一直等待ack消息。」我現在遇到的問題是這樣的:我這邊有幾條線程去消息隊列里取數據,但是會有異常數據導致線程掛掉,就是上邊的「客戶端在發送ack之前意外死掉了」,RabbitMQ會將消息投遞到下一個consumer客戶端,這樣一條異常數據會把我的所有線程掛掉,我現在想實現這樣的功能:如果有異常數據導致進程掛掉,那麼我不讓RabbitMQ將這條消息投遞到下一個consumer客戶端,而是放到另一個地方或者另外處理,請問該如何實現呢?