下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
技術(shù)干貨:ActiveMQ面試題及答案
1、什么是ActiveMQ?
activeMQ是一種開(kāi)源的,實(shí)現(xiàn)了JMS1.1規(guī)范的,面對(duì)消息(MOM)的中間件,為應(yīng)用程序供應(yīng)高效的、可擴(kuò)展的、穩(wěn)定的和平安的企業(yè)級(jí)消息通信。
2、Activemq的瓶頸值
依據(jù)網(wǎng)上一般評(píng)測(cè)文檔上來(lái)看,每秒的消息吞吐在2000以上,acticemq也可以集群化部署,也是使用zookeeper來(lái)搭建。
3、ActiveMQ服務(wù)器宕機(jī)怎么辦?
這得從ActiveMQ的儲(chǔ)存機(jī)制說(shuō)起。在通常的狀況下,非長(zhǎng)久化消息是存儲(chǔ)在內(nèi)存中的,長(zhǎng)久化消息是存儲(chǔ)在文件中的,它們的最大限制在配置文件的systemUsage節(jié)點(diǎn)中配置。
但是,在非長(zhǎng)久化消息積累到肯定程度,內(nèi)存告急的時(shí)候,ActiveMQ會(huì)將內(nèi)存中的非長(zhǎng)久化消息寫(xiě)入臨時(shí)文件中,以騰出內(nèi)存。雖然都保存到了文件里,但它和長(zhǎng)久化消息的區(qū)分是,重啟后長(zhǎng)久化消息會(huì)從文件中恢復(fù),非長(zhǎng)久化的臨時(shí)文件會(huì)直接刪除。
那假如文件增大到達(dá)了配置中的最大限制的時(shí)候會(huì)發(fā)生什么?我做了以下試驗(yàn):
設(shè)置2G左右的長(zhǎng)久化文件限制,大量生產(chǎn)長(zhǎng)久化消息直到文件達(dá)到最大限制,此時(shí)生產(chǎn)者堵塞,但消費(fèi)者可正常連接并消費(fèi)消息,等消息消費(fèi)掉一部分,文件刪除又騰出空間之后,生產(chǎn)者又可連續(xù)發(fā)送消息,服務(wù)自動(dòng)恢復(fù)正常。
設(shè)置2G左右的臨時(shí)文件限制,大量生產(chǎn)非長(zhǎng)久化消息并寫(xiě)入臨時(shí)文件,在達(dá)到最大限制時(shí),生產(chǎn)者堵塞,消費(fèi)者可正常連接但不能消費(fèi)消息,或者原本慢速消費(fèi)的消費(fèi)者,消費(fèi)突然停止。整個(gè)系統(tǒng)可連接,但是無(wú)法供應(yīng)服務(wù),就這樣掛了。
詳細(xì)緣由不詳,解決方案:盡量不要用非長(zhǎng)久化消息,非要用的話,將臨時(shí)文件限制盡可能的調(diào)大。
4、AcitveMQ的作用、原理?(生產(chǎn)者、消費(fèi)者。p2p、訂閱實(shí)現(xiàn)流程)
Activemq的作用就是系統(tǒng)之間進(jìn)行通信。當(dāng)然可以使用其他方式進(jìn)行系統(tǒng)間通信,假如使用Activemq的話可以對(duì)系統(tǒng)之間的調(diào)用進(jìn)行解耦,實(shí)現(xiàn)系統(tǒng)間的異步通信。原理就是生產(chǎn)者生產(chǎn)消息,把消息發(fā)送給activemq。Activemq接收到消息,然后查看有多少個(gè)消費(fèi)者,然后把消息轉(zhuǎn)發(fā)給消費(fèi)者,此過(guò)程中生產(chǎn)者無(wú)需參加。消費(fèi)者接收到消息后做相應(yīng)的處理和生產(chǎn)者沒(méi)有任何關(guān)系
5、activemq在項(xiàng)目中如何應(yīng)用的
Activemq在項(xiàng)目中主要是完成系統(tǒng)之間通信,并且將系統(tǒng)之間的調(diào)用進(jìn)行解耦。例如在添加、修改商品信息后,需要將商品信息同步到索引庫(kù)、同步緩存中的數(shù)據(jù)以及生成靜態(tài)頁(yè)面一系列操作。
在此場(chǎng)景下就可以使用activemq。一旦后臺(tái)對(duì)商品信息進(jìn)行修改后,就向activemq發(fā)送一條消息,然后通過(guò)activemq將消息發(fā)送給消息的消費(fèi)端,消費(fèi)端接收到消息可以進(jìn)行相應(yīng)的業(yè)務(wù)處理
7、rabbitmq如何實(shí)現(xiàn)集群高可用?
集群是保證服務(wù)牢靠性的一種方式,同時(shí)可以通過(guò)水平擴(kuò)展以提升消息吞吐力量。RabbitMQ是用分布式程序設(shè)計(jì)語(yǔ)言erlang開(kāi)發(fā)的,所以天生就支持集群。接下來(lái),將介紹RabbitMQ分布式消息處理方式、集群模式、節(jié)點(diǎn)類型,并動(dòng)手搭建一個(gè)高可用集群環(huán)境,最終通過(guò)java程序來(lái)驗(yàn)證集群的高可用性。
RabbitMQ分布式的消息處理方式有以下三種:
(1)Clustering:不支持跨網(wǎng)段,各節(jié)點(diǎn)需運(yùn)行同版本的Erlang和RabbitMQ,應(yīng)用于同網(wǎng)段局域網(wǎng)。
(2)Federation:允許單臺(tái)服務(wù)器上的Exchange或Queue接收發(fā)布到另一臺(tái)服務(wù)器上Exchange或Queue的消息,應(yīng)用于廣域網(wǎng)。
(3)Shovel:與Federation類似,但工作在更低層次。
RabbitMQ對(duì)網(wǎng)絡(luò)延遲很敏感,在LAN環(huán)境建議使用clustering方式;在WAN環(huán)境中,則使用Federation或Shovel。我們平常說(shuō)的RabbitMQ集群,說(shuō)的就是clustering方式,它是RabbitMQ內(nèi)嵌的一種消息處理方式,而Federation或Shovel則是以plugin形式存在。
8、丟消息怎么辦?
這得從java的.SocketException特別說(shuō)起。簡(jiǎn)潔點(diǎn)說(shuō)就是當(dāng)網(wǎng)絡(luò)發(fā)送方發(fā)送一堆數(shù)據(jù),然后調(diào)用close關(guān)閉連接之后。這些發(fā)送的數(shù)據(jù)都在接收者的緩存里,接收者假如調(diào)用read方法照舊能從緩存中讀取這些數(shù)據(jù),盡管對(duì)方已經(jīng)關(guān)閉了連接。
但是當(dāng)接收者嘗試發(fā)送數(shù)據(jù)時(shí),由于此時(shí)連接已關(guān)閉,所以會(huì)發(fā)生特別,這個(gè)很好理解。不過(guò)需要留意的是,當(dāng)發(fā)生SocketException后,原本緩存區(qū)中數(shù)據(jù)也作廢了,此時(shí)接收者再次調(diào)用read方法去讀取緩存中的數(shù)據(jù),就會(huì)報(bào)Softwarecausedconnectionabort:recvfailed錯(cuò)誤。
通過(guò)抓包得知,ActiveMQ會(huì)每隔10秒發(fā)送一個(gè)心跳包,這個(gè)心跳包是服務(wù)器發(fā)送給客戶端的,用來(lái)推斷客戶端死沒(méi)死。假如你看過(guò)上面第一條,就會(huì)知道非長(zhǎng)久化消息積累到肯定程度會(huì)寫(xiě)到文件里,這個(gè)寫(xiě)的過(guò)程會(huì)堵塞全部動(dòng)作,而且會(huì)持續(xù)20到30秒,并且隨著內(nèi)存的增大而增大。
當(dāng)客戶端發(fā)完消息調(diào)用connection.close()時(shí),會(huì)期盼服務(wù)器對(duì)于關(guān)閉連接的回答,假如超過(guò)15秒沒(méi)回答就直接調(diào)用socket層的close關(guān)閉tcp連接了。這時(shí)客戶端發(fā)出的消息其實(shí)還在服務(wù)器的緩存里等待處理,不過(guò)由于服務(wù)器心跳包的設(shè)置,導(dǎo)致發(fā)生了.Socket
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度床上用品行業(yè)數(shù)據(jù)共享與分析合同3篇
- 2024石料批發(fā)市場(chǎng)運(yùn)營(yíng)與管理采購(gòu)合同3篇
- 2024熟料綠色采購(gòu)與節(jié)能減排合作協(xié)議3篇
- 2025年會(huì)展中心場(chǎng)地租賃分成及會(huì)展服務(wù)合同3篇
- 二零二五年度餐飲企業(yè)冷鏈物流配送合同9篇
- 2024年高性能電動(dòng)汽車交易協(xié)議一
- 專項(xiàng)不良資產(chǎn)盡職調(diào)查服務(wù)協(xié)議版
- 2024稅務(wù)代理委托合同樣本
- 2024離婚協(xié)議范本及注意事項(xiàng)
- 2025年健康醫(yī)療大數(shù)據(jù)分析承包合同2篇
- MT/T 199-1996煤礦用液壓鉆車通用技術(shù)條件
- GB/T 6144-1985合成切削液
- GB/T 10357.1-2013家具力學(xué)性能試驗(yàn)第1部分:桌類強(qiáng)度和耐久性
- 第三方在線糾紛解決機(jī)制(ODR)述評(píng),國(guó)際商法論文
- 第5章-群體-團(tuán)隊(duì)溝通-管理溝通
- 腎臟病飲食依從行為量表(RABQ)附有答案
- 深基坑-安全教育課件
- 園林施工管理大型園林集團(tuán)南部區(qū)域養(yǎng)護(hù)標(biāo)準(zhǔn)圖例
- 排水許可申請(qǐng)表
- 低血糖的觀察和護(hù)理課件
- 計(jì)量檢定校準(zhǔn)技術(shù)服務(wù)合同協(xié)議書(shū)
評(píng)論
0/150
提交評(píng)論