摘要:消息隊列本來就是一種經(jīng)典的生產(chǎn)者與消費者模式。為了最大效率的完成對消息隊列中的消息的消費,一般可以同時起多個一模一樣的消費者,以并行的方式來拉取消息隊列中的消息。這樣的好處有多個加快處理消息隊列中的消息。
消息隊列本來就是一種經(jīng)典的生產(chǎn)者與消費者模式。生產(chǎn)者向消息隊列中發(fā)送消息,消費者從消息隊列中獲取消息來消費。
消息的傳送一般由一個代理來實現(xiàn)的,那就是Message broker(即消息代理)。Message broker有兩大職責,一是消息路由,二是數(shù)據(jù)轉(zhuǎn)換。這就好比A給B寄信,如果不使用郵局的話,就要自己想辦法送達,費時費力,而通過郵局的話,只要B的地址在郵局中注冊過,那么天涯海角也能送達。這里的郵局扮演的角色就像消息系統(tǒng)中的Message broker。
眾所周知,消息隊列是典型的’send and forget’原則的體現(xiàn),生產(chǎn)者只管發(fā)送,不管消息的后續(xù)處理。為了最大效率的完成對消息隊列中的消息的消費,一般可以同時起多個一模一樣的消費者,以并行的方式來拉取消息隊列中的消息。這樣的好處有多個:
1.加快處理消息隊列中的消息。
2.增強穩(wěn)定性,如果一個消費者出現(xiàn)問題,不會影響對消息隊列中消息的處理。
使用spring JMS來配置多個Listener實例,只需配置MessageListenerContainer就行。
多配置一個屬性concurrentConsumers,設(shè)置值為4,就是同時啟動4個Listener實例來消費消息。
使用MessageSender來發(fā)送100條消息,可以檢查消息處理的順序會發(fā)生變化。
for (int i = 0; i < 100; i++) { messageSender.send(String.format("message %d",i)); }
運行結(jié)果如下:
... Received: message 4 Received: message 7 Received: message 6 Received: message 5 Received: message 8 Received: message 10 Received: message 9 …
除了設(shè)置一個固定的Listener數(shù)量,也可以設(shè)置一個Listener區(qū)間,這樣MessageListenerContainer可以根據(jù)消息隊列中的消息規(guī)模自動調(diào)整并行數(shù)量。
這次使用的是concurrency屬性,4-8表示最小并發(fā)數(shù)是4,最大并發(fā)數(shù)為8,當然也可以給一個固定值,比如5,這樣就相當于concurrentConsumers屬性了。
http://blog.csdn.net/super_sc...
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/70220.html
摘要:利用的高級特性特性是一種負載均衡的機制。在一個消息被分發(fā)到之前,首先檢查消息屬性。屬性為某個值的消息單個消息或消息集合在描述,和的對應(yīng)關(guān)系,以及負載均衡策略時。同樣做到了保證消息的順序情況下,均衡消費的消費消息。 通常mq可以保證先到隊列的消息按照順序分發(fā)給消費者消費來保證順序,但是一個隊列有多個消費者消費的時候,那將失去這個保證,因為這些消息被多個線程并發(fā)的消費。但是有的時候消息按照...
摘要:嵌入在一些項目中,單獨開啟一個,對于項目實施來說有時略顯繁瑣。待啟動后,選擇所在的進程。連接后選擇頁簽紅框的地方分別為已消費和已進入中的消息的條數(shù)。 ActiveMQ 嵌入Tomcat 在一些項目中,單獨開啟一個ActiveMQ,對于項目實施來說有時略顯繁瑣。所以我們將ActiveMQ內(nèi)嵌到Tomcat,Tomcat啟動同時就順帶啟動了ActiveMQ。由此我們需要掌握三個個重要的知識...
摘要:中間件的分類基于遠程過程調(diào)用的中間件?;趯ο笳埱蟠淼闹虚g件。消息傳遞指的是程序之間通過在消息中發(fā)送數(shù)據(jù)進行通信,而不是通過直接調(diào)用彼此來通信,直接調(diào)用通常是用于諸如遠程過程調(diào)用的技術(shù)。 一.中間件 1.1 什么是中間件? 由于業(yè)務(wù)、機構(gòu)和技術(shù)是不斷變化的,因此為其服務(wù)的軟件系統(tǒng)必須適應(yīng)這樣的變化。在合并、添加服務(wù)或擴展可用服務(wù)之后,公司可能無力負擔重新創(chuàng)建信息系統(tǒng)所需的成本。正是在...
閱讀 2860·2021-11-17 09:33
閱讀 4575·2021-09-22 15:57
閱讀 2944·2019-08-30 14:16
閱讀 3198·2019-08-29 14:07
閱讀 2474·2019-08-26 11:55
閱讀 3513·2019-08-23 17:07
閱讀 1792·2019-08-23 16:50
閱讀 2645·2019-08-23 16:08