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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

activemq中怎么知道推送消息是否成功_如何优雅的使用activeMQ 安装、应用、安全认证、持久化...

發布時間:2025/3/15 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 activemq中怎么知道推送消息是否成功_如何优雅的使用activeMQ 安装、应用、安全认证、持久化... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

ActiveMQ安裝

1. 下載資源

ActiveMQ官網:

版本說明

ActiveMQ5.10.x以上版本必須使用JDK1.8才能正常使用。

ActiveMQ5.9.x及以下版本使用JDK1.7即可正常使用。

上傳至Linux服務器

解壓安裝文件

tar -zxf apache-activemq-5.9.0-bin.tar.gz

檢查權限

ls -al apache-activemq-5.9.0/bin

如果權限不足,則無法執行,需要修改文件權限:

chmod 755 activemq

復制應用至本地目錄

cp -r apache-activemq-5.9.0 /usr/local/activemq

配置文件簡介

/usr/local/activemq/conf/* - 配置文件.

需要關注的配置文件有: activemq.xml, jetty.xml, users.properties

任何配置文件修改后,必須重啟ActiveMQ,才能生效.

activemq.xml

就是spring配置文件. 其中配置的是ActiveMQ應用使用的默認對象組件.

transportConnectors標簽 - 配置鏈接端口信息的. 其中的端口號61616是ActiveMQ對外發布的tcp協議訪問端口. 就是java代碼訪問ActiveMQ時使用的端口.

jetty.xml

spring配置文件, 用于配置jetty服務器的默認對象組件.

jetty是類似tomcat的一個中間件容器.

ActiveMQ默認支持一個網頁版的服務查看站點. 可以實現ActiveMQ中消息相關數據的頁面查看.

8161端口, 是ActiveMQ網頁版管理站點的默認端口.

在ActiveMQ網頁版管理站點中,需要登錄, 默認的用戶名和密碼都是admin.

users.properties

內容信息: 用戶名=密碼

是用于配置客戶端通過協議訪問ActiveMQ時,使用的用戶名和密碼.

啟動ActiveMQ

/usr/local/activemq/bin/activemq start

測試ActiveMQ

檢查進程

ps aux | grep activemq

見到下述內容即代表啟動成功

管理界面

使用瀏覽器訪問ActiveMQ管理應用, 地址如下:

用戶名: admin

密碼: admin

ActiveMQ使用的是jetty提供HTTP服務.啟動稍慢,建議短暫等待再訪問測試.

見到如下界面代表服務啟動成功

修改訪問端口

修改ActiveMQ配置文件: /usr/local/activemq/conf/jetty.xml

配置文件修改完畢,保存并重新啟動ActiveMQ服務。

重啟ActiveMQ

/usr/local/activemq/bin/activemq restart

關閉ActiveMQ

/usr/local/activemq/bin/activemq stop

ActiveMQ應用

1. PTP處理模式(Queue)

消息生產者生產消息發送到queue中,然后消息消費者從queue中取出并且消費消息。

消息被消費以后,queue中不再有存儲,所以消息消費者不可能消費到已經被消費的消息。

Queue支持存在多個消費者,但是對一個消息而言,只會有一個消費者可以消費、其它的則不能消費此消息了。

當消費者不存在時,消息會一直保存,直到有消費消費

Publish/Subscribe處理模式(Topic)

消息生產者(發布)將消息發布到topic中,同時有多個消息消費者(訂閱)消費該消息。

和點對點方式不同,發布到topic的消息會被所有訂閱者消費。

當生產者發布消息,不管是否有消費者。都不會保存消息

一定要先有消息的消費者,后有消息的生產者。

PTP和PUB/SUB簡單對比

ActiveMQ安全認證

ActiveMQ也提供了安全認證。就是用戶名密碼登錄規則。ActiveMQ如果需要使用安全認證的話,必須在activemq的核心配置文件中開啟安全配置。配置文件就是conf/activemq.xml

在conf/activemq.xml配置文件的broker標簽中增加下述內容。

指定了使用JAAS插件管理權限,至于configuration="activemq"是在login.conf文件里定義的

指定了具體的Topic/Queue與用戶組的授權關系

" read="admins" write="admins" admin="admins"/>這個是必須的配置,不能少

開啟認證后,認證使用的用戶信息由其他配置文件提供。

conf/login.config

user代表用戶信息配置文件,group代表用戶組信息配置文件。尋址路徑為相對當前配置文件所在位置開始尋址。

conf/users.properties

conf/groups.properties

ActiveMQ的持久化

ActiveMQ中,持久化是指對消息數據的持久化。在ActiveMQ中,默認的消息是保存在內存中的。當內存容量不足的時候,或ActiveMQ正常關閉的時候,會將內存中的未處理的消息持久化到磁盤中。具體的持久化策略由配置文件中的具體配置決定。

ActiveMQ的默認存儲策略是kahadb。如果使用JDBC作為持久化策略,則會將所有的需要持久化的消息保存到數據庫中。

所有的持久化配置都在conf/activemq.xml中配置,配置信息都在broker標簽內部定義。

1. kahadb方式

是ActiveMQ默認的持久化策略。kahadb是一個文件型數據庫。是使用內存+文件保證數據的持久化的。kahadb可以限制每個數據文件的大小。不代表總計數據容量。

特性是:1、日志形式存儲消息;2、消息索引以B-Tree結構存儲,可以快速更新;3、完全支持JMS事務;4、支持多種恢復機制;

AMQ方式

只適用于5.3版本之前。

AMQ也是一個文件型數據庫,消息信息最終是存儲在文件中。內存中也會有緩存數據。

性能高于JDBC,寫入消息時,會將消息寫入日志文件,由于是順序追加寫,性能很高。為了提升性能,創建消息主鍵索引,并且提供緩存機制,進一步提升性能。每個日志文件的大小都是有限制的(默認32m,可自行配置)。

當超過這個大小,系統會重新建立一個文件。當所有的消息都消費完成,系統會刪除這個文件或者歸檔。

主要的缺點是AMQ Message會為每一個Destination創建一個索引,如果使用了大量的Queue,索引文件的大小會占用很多磁盤空間。

而且由于索引巨大,一旦Broker(ActiveMQ應用實例)崩潰,重建索引的速度會非常慢。

雖然AMQ性能略高于Kaha DB方式,但是由于其重建索引時間過長,而且索引文件占用磁盤空間過大,所以已經不推薦使用。

JDBC持久化方式

ActiveMQ將數據持久化到數據庫中。 不指定具體的數據庫。 可以使用任意的數據庫中。 本環節中使用MySQL數據庫。

下述文件為activemq.xml配置文件部分內容。不要完全復制。

首先定義一個mysql-ds的MySQL數據源,然后在persistenceAdapter節點中配置jdbcPersistenceAdapter并且引用剛才定義的數據源。

dataSource指定持久化數據庫的bean,createTablesOnStartup是否在啟動的時候創建數據表,默認值是true,這樣每次啟動都會去創建數據表了,一般是第一次啟動的時候設置為true,之后改成false。

配置成功后,需要在數據庫中創建對應的database,否則無法訪問。表格ActiveMQ可以自動創建。

activemq_msgs用于存儲消息,Queue和Topic都存儲在這個表中:

ID:自增的數據庫主鍵

CONTAINER:消息的Destination

MSGID_PROD:消息發送者客戶端的主鍵

MSG_SEQ:是發送消息的順序,MSGID_PROD+MSG_SEQ可以組成JMS的MessageID

EXPIRATION:消息的過期時間,存儲的是從1970-01-01到現在的毫秒數

MSG:消息本體的Java序列化對象的二進制數據

PRIORITY:優先級,從0-9,數值越大優先級越高

activemq_acks用于存儲訂閱關系。如果是持久化Topic,訂閱者和服務器的訂閱關系在這個表保存:

主要的數據庫字段如下:

CONTAINER:消息的Destination

SUB_DEST:如果是使用Static集群,這個字段會有集群其他系統的信息

CLIENT_ID:每個訂閱者都必須有一個唯一的客戶端ID用以區分

SUB_NAME:訂閱者名稱

SELECTOR:選擇器,可以選擇只消費滿足條件的消息。條件可以用自定義屬性實現,可支持多屬性AND和OR操作

LAST_ACKED_ID:記錄消費過的消息的ID。

表activemq_lock在集群環境中才有用,只有一個Broker可以獲得消息,稱為Master Broker,

其他的只能作為備份等待Master Broker不可用,才可能成為下一個Master Broker。這個表用于記錄哪個Broker是當前的Master Broker。

只有在消息必須保證有效,且絕對不能丟失的時候。使用JDBC存儲策略。

如果消息可以容忍丟失,或使用集群/主備模式保證數據安全的時候,建議使用levelDB或Kahadb。

activeMQ 安裝教程視頻版,可以轉發文章關注然后私信我:“我要提升”,即可獲得更多資料視頻講解

總結

以上是生活随笔為你收集整理的activemq中怎么知道推送消息是否成功_如何优雅的使用activeMQ 安装、应用、安全认证、持久化...的全部內容,希望文章能夠幫你解決所遇到的問題。

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