日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

activemq和mysql_activeMQ 填坑记

發(fā)布時(shí)間:2023/12/4 数据库 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 activemq和mysql_activeMQ 填坑记 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前言

MQ是現(xiàn)在大型系統(tǒng)架構(gòu)中必不可少的一個(gè)重要中間件,之前有偏文章《MQ(消息隊(duì)列)常見(jiàn)的應(yīng)用場(chǎng)景解析》介紹過(guò)MQ的應(yīng)用場(chǎng)景,現(xiàn)在流行的幾個(gè)MQ是rabbitmq,rocketma,kafka,這幾個(gè)MQ比較最容易找到相關(guān)的文章,而也有些系統(tǒng)使用的是activemq,因activemq是相對(duì)比較傳統(tǒng)的MQ,在使用過(guò)程中還是會(huì)遇到很多坑,這里簡(jiǎn)單列舉幾個(gè)大家可能會(huì)遇到的問(wèn)題,把自己使用acitvemq的經(jīng)驗(yàn)和大家分享一下。

Mysql 持久化

現(xiàn)在大家使用MQ,基本都是會(huì)把數(shù)據(jù)進(jìn)行持久化,MQ默認(rèn)存儲(chǔ)持久化數(shù)據(jù)使用kahaDB,但是鑒于大家對(duì)mysql比較熟悉,很多人會(huì)選擇mysql進(jìn)行數(shù)據(jù)的持久化,因?yàn)閙ysql查看數(shù)據(jù)還是比較方便的。如果需要把持久化方式改為mysql,則需要修改如下配置:

這里的配置有幾個(gè)地方大家需要關(guān)注下:

配置說(shuō)明dataDirectory需要配置和broker 的dataDirectory 一致dataSource數(shù)據(jù)源的選擇,關(guān)聯(lián)數(shù)據(jù)庫(kù)的具體配置,下文會(huì)具體說(shuō)明useDatabaseLock是否使用數(shù)據(jù)庫(kù)鎖,主要是在程序啟動(dòng)的時(shí)候會(huì)同步查詢數(shù)據(jù),導(dǎo)致數(shù)據(jù)庫(kù)鎖

還需要配置數(shù)據(jù)庫(kù)的連接、賬號(hào)、密碼等:

其中,id 名和上文提到的datasource應(yīng)該是一樣的。否則,不知道連接哪個(gè)實(shí)例。

數(shù)據(jù)庫(kù)連接池問(wèn)題

啟動(dòng)activemq如果提示數(shù)據(jù)庫(kù)的連接池有問(wèn)題,這可能是少了lib,增加mysql-connector-java-5.1.30.jar

commons-dbcp2-2.1.1.jar

commons-pool2-2.4.2.jar

三個(gè)包,放到lib目錄即可

管理界面無(wú)法打開(kāi)

如果正常啟動(dòng)了,但是管理界面無(wú)法啟動(dòng),那么需要修改下管理界面的數(shù)據(jù)庫(kù)連接。使用MQ主要原因之一是MQ性能比傳統(tǒng)關(guān)系數(shù)據(jù)庫(kù)性能要好,但是把MQ數(shù)據(jù)存儲(chǔ)的mysql其實(shí)不是一個(gè)很好的選擇,反其道而行之,雖然這樣用的團(tuán)隊(duì)不少,但是強(qiáng)烈推薦不要這么做。還是用默認(rèn)的存儲(chǔ)方式,確保性能為主。

activeMQ過(guò)期配置

前文說(shuō)過(guò),activemq性能本來(lái)就不是最優(yōu)的,特別是使用了mysql作為數(shù)據(jù)庫(kù)存儲(chǔ)工具后,性能更加不靠譜,所以性能優(yōu)化,是個(gè)重要的工作,定期清理MQ的過(guò)期信息,就顯的非常重要了。

定期清理無(wú)效的隊(duì)列

配置如下:

定期自動(dòng)清理無(wú)效的Topic和Queue,這個(gè)配置,只會(huì)清除設(shè)置的時(shí)間內(nèi),沒(méi)有被訂閱,同時(shí)隊(duì)列沒(méi)有遺留數(shù)據(jù)的隊(duì)列。

同時(shí),對(duì)于boker節(jié)點(diǎn),需要設(shè)置schedulePeriodForDestinationPurge 參數(shù),表示多長(zhǎng)之間執(zhí)行一次檢測(cè)。

useJmx="true" schedulePeriodForDestinationPurge="5000">

設(shè)置消息的全局過(guò)期時(shí)間

開(kāi)發(fā)的時(shí)候,大家應(yīng)該都知道可以設(shè)置消息的過(guò)期時(shí)間,是否有統(tǒng)一設(shè)置消息的過(guò)期時(shí)間呢?

在broker節(jié)點(diǎn)下增加如下的配置:

zeroExpirationOverride="10000" />

為了便于測(cè)試,我設(shè)置的是10s,當(dāng)然,生產(chǎn)環(huán)境根據(jù)自己的是實(shí)際設(shè)置的會(huì)比較長(zhǎng)。過(guò)期的時(shí)間會(huì)進(jìn)入死信,死信也會(huì)沿用此時(shí)間,到期后,系統(tǒng)就會(huì)自動(dòng)刪除信息了。

經(jīng)過(guò)我個(gè)人的實(shí)踐經(jīng)驗(yàn),MQ積累的數(shù)據(jù)達(dá)千萬(wàn)級(jí)別后,性能下降的比較厲害,定期清理MQ的消息,是優(yōu)化性能非常重要的一個(gè)操作。

總結(jié)

現(xiàn)如今,MQ的選擇很多,建議還是優(yōu)先選擇rabbitmq、rocketmq或者是kafka,如果已經(jīng)選擇activemq,需要持續(xù)關(guān)注MQ的消費(fèi)情況,最好能設(shè)置過(guò)期時(shí)間,定期清理消息隊(duì)列的數(shù)據(jù),避免數(shù)據(jù)的積累,造成性能的下降。

微信號(hào):itmifen

總結(jié)

以上是生活随笔為你收集整理的activemq和mysql_activeMQ 填坑记的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。