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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

activemq和mysql_activeMQ 填坑记

發布時間:2023/12/4 数据库 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 activemq和mysql_activeMQ 填坑记 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

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

Mysql 持久化

現在大家使用MQ,基本都是會把數據進行持久化,MQ默認存儲持久化數據使用kahaDB,但是鑒于大家對mysql比較熟悉,很多人會選擇mysql進行數據的持久化,因為mysql查看數據還是比較方便的。如果需要把持久化方式改為mysql,則需要修改如下配置:

這里的配置有幾個地方大家需要關注下:

配置說明dataDirectory需要配置和broker 的dataDirectory 一致dataSource數據源的選擇,關聯數據庫的具體配置,下文會具體說明useDatabaseLock是否使用數據庫鎖,主要是在程序啟動的時候會同步查詢數據,導致數據庫鎖

還需要配置數據庫的連接、賬號、密碼等:

其中,id 名和上文提到的datasource應該是一樣的。否則,不知道連接哪個實例。

數據庫連接池問題

啟動activemq如果提示數據庫的連接池有問題,這可能是少了lib,增加mysql-connector-java-5.1.30.jar

commons-dbcp2-2.1.1.jar

commons-pool2-2.4.2.jar

三個包,放到lib目錄即可

管理界面無法打開

如果正常啟動了,但是管理界面無法啟動,那么需要修改下管理界面的數據庫連接。使用MQ主要原因之一是MQ性能比傳統關系數據庫性能要好,但是把MQ數據存儲的mysql其實不是一個很好的選擇,反其道而行之,雖然這樣用的團隊不少,但是強烈推薦不要這么做。還是用默認的存儲方式,確保性能為主。

activeMQ過期配置

前文說過,activemq性能本來就不是最優的,特別是使用了mysql作為數據庫存儲工具后,性能更加不靠譜,所以性能優化,是個重要的工作,定期清理MQ的過期信息,就顯的非常重要了。

定期清理無效的隊列

配置如下:

定期自動清理無效的Topic和Queue,這個配置,只會清除設置的時間內,沒有被訂閱,同時隊列沒有遺留數據的隊列。

同時,對于boker節點,需要設置schedulePeriodForDestinationPurge 參數,表示多長之間執行一次檢測。

useJmx="true" schedulePeriodForDestinationPurge="5000">

設置消息的全局過期時間

開發的時候,大家應該都知道可以設置消息的過期時間,是否有統一設置消息的過期時間呢?

在broker節點下增加如下的配置:

zeroExpirationOverride="10000" />

為了便于測試,我設置的是10s,當然,生產環境根據自己的是實際設置的會比較長。過期的時間會進入死信,死信也會沿用此時間,到期后,系統就會自動刪除信息了。

經過我個人的實踐經驗,MQ積累的數據達千萬級別后,性能下降的比較厲害,定期清理MQ的消息,是優化性能非常重要的一個操作。

總結

現如今,MQ的選擇很多,建議還是優先選擇rabbitmq、rocketmq或者是kafka,如果已經選擇activemq,需要持續關注MQ的消費情況,最好能設置過期時間,定期清理消息隊列的數據,避免數據的積累,造成性能的下降。

微信號:itmifen

總結

以上是生活随笔為你收集整理的activemq和mysql_activeMQ 填坑记的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。