分布式訊息佇列ActiveMQ Spring整合

2021-09-11 12:51:21 字數 2033 閱讀 7234

訊息佇列技術是分布式應用間交換資訊的一種技術。使用訊息佇列可以很好的將任務以非同步的方式進行處理或者進行資料傳送和儲存等。例如當你頻繁地向資料庫中插入資料、頻繁的向搜尋引擎提交資料,就可採取訊息佇列來非同步插入。另外,還可以將較慢/較複雜的處理邏輯、有併發數量限制的處理邏輯,通過訊息佇列放在後台處理。

常規的使用場景:簡訊服務、電子郵件服務、處理服務、好友動態推送服務等。

特性:非同步、順序讀寫、高效能、協議簡單。所以一般會用於解決大量的伺服器端非同步請求,同時可以實現服務端的負載均衡和業務的容災。

activemq簡介

activemq 是apache出品,最流行的,能力強勁的開源訊息匯流排。activemq 是乙個完全支援jms1.1和j2ee

1.4規範的 jms provider實現,儘管jms規範出台已經是很久的事情了,但是jms在當今的j2ee應用中間仍然扮演著特殊的地位

訊息模型: 點對點(p2p)、發布/廣播(pub/sub)。

流程:

p2p:訊息生產者》訊息佇列》訊息消費者

pub/sub:主題》發布者》訂閱者

activemq準備

activemq.apache.org/download.ht…

進行解壓後執行其bin目錄下面的win32或者win64資料夾下的activemq.bat檔案啟動activemq。

配置connectionfactory

connectionfactory是spring用於建立到jms伺服器鏈結的,spring提供了多種connectionfactory.

pooledconnectionfactory: jmstemlate每次傳送訊息時只會快取connection,session和productor,不會快取consumer。因此只適合於生產者傳送訊息,這個只是在要求訊息處理的及時性不是特別高的情況下。

cachingconnectionfactory: 繼承了singleconnectionfactory,所以它擁有singleconnectionfactory的所有功能,同時它還新增了快取功能,它可以快取session、messageproducer和messageconsumer。我們使用cachingconnectionfactory來作為示例。

spring配置

id="amqconnectionfactory"

--設定activemq伺服器位址及埠-->

brokerurl="failover:(tcp://localhost:61616)?initialreconnectdelay=100" />

id="connectionfactory"

class="org.springframework.jms.connection.cachingconnectionfactory">

ref="amqconnectionfactory" />

name="sessioncachesize"

value="100" />

bean>

id="jmsqueuetemplate"

class="org.springframework.jms.core.jmstemplate">

ref="connectionfactory" />

name="pubsubdomain"

value="false" />

bean>

concurrency="10"

destination-type="queue"

container-type="default"

connection-factory="connectionfactory"

acknowledge="auto">

destination="queue"

ref="consumermessagelistener" />

jms:listener-container>

複製**

實現訊息監聽,獲取訊息並消費

分布式訊息佇列

以下是訊息佇列以下的大綱,本文主要介紹訊息佇列概述,訊息佇列應用場景和訊息中介軟體示例 電商,日誌系統 訊息佇列概述 訊息佇列應用場景 訊息中介軟體示例 jms訊息服務 見第二篇 大型 架構系列 分布式訊息佇列 二 常用訊息佇列 見第二篇 大型 架構系列 分布式訊息佇列 二 參考 推薦 資料 見第二...

分布式訊息佇列

訊息佇列中介軟體是分布式系統中重要的元件,主要解決應用耦合,非同步訊息,流量削鋒等問題。實現高效能,高可用,可伸縮和最終一致性架構。是大型分布式系統不可缺少的中介軟體。目前在生產環境,使用較多的訊息佇列有activemq,rabbitmq,zeromq,kafka,metamq,rocketmq等。...

分布式訊息佇列(1)

訊息佇列中介軟體是分布式系統中重要的元件,主要解決應用耦合,非同步訊息,流量削鋒等問題。實現高效能,高可用,可伸縮和最終一致性架構。是大型分布式系統不可缺少的中介軟體。目前在生產環境,使用較多的訊息佇列有activemq,rabbitmq,zeromq,kafka,metamq,rocketmq等。...