activemq基本介紹及使用

2022-09-06 08:09:08 字數 4684 閱讀 7201

一:jms概念

jms即j**a訊息服務(j**a message service)應用程式介面,是乙個j**a平台中關於面向訊息中介軟體(mom)的api,用於在兩個應用程式之間,或分布式系統中傳送訊息,進行非同步通訊。j**a訊息服務是乙個與具體平台無關的api,絕大多數mom提供商都對jms提供支援。jms是一種與廠商無關的 api,用來訪問收發系統訊息,它類似於jdbc(j**a database connectivity)。

1.體系架構

jms由以下元素組成:

jms提供者:連線面向訊息中介軟體的,jms介面的乙個實現。提供者可以是j**a平台的jms實現,也可以是非j**a平台的面向訊息中介軟體的介面卡。

jms客戶:生產或消費基於訊息的j**a的應用程式或物件。

jms生產者:建立並傳送訊息的jms客戶。

jms消費者:接收訊息的jms客戶。

jms訊息:包括可以在jms客戶之間傳遞的資料的物件。

jms佇列:乙個容納那些被傳送的等待閱讀的訊息的區域。與佇列名字所暗示的意思不同,訊息的接受順序並不一定要與訊息的傳送順序相同。一旦乙個訊息被閱讀,該訊息將被從佇列中移走。

jms主題:一種支援傳送訊息給多個訂閱者的機制。

2.物件模型

jms物件模型包含如下幾個要素:

1)連線工廠。連線工廠(connectionfactory)是由管理員建立,並繫結到jndi樹中。客戶端使用jndi查詢連線工廠,然後利用連線工廠建立乙個jms連線。

2)jms連線。jms連線(connection)表示jms客戶端和伺服器端之間的乙個活動的連線,是由客戶端通過呼叫連線工廠的方法建立的。

3)jms會話。jms會話(session)表示jms客戶與jms伺服器之間的會話狀態。jms會話建立在jms連線上,表示客戶與伺服器之間的乙個會話執行緒。

4)jms目的。jms目的(destination),又稱為訊息佇列,是實際的訊息源。

5)jms生產者和消費者。生產者(message producer)和消費者(message consumer)物件由session物件建立,用於傳送和接收訊息。

6)jms訊息通常有兩種型別:

​ ① 點對點(point-to-point)。在點對點的訊息系統中,訊息分發給乙個單獨的使用者。點對點訊息往往與佇列(j**ax.jms.queue)相關聯。

​ ② 發布/訂閱(publish/subscribe)。發布/訂閱訊息系統支援乙個事件驅動模型,訊息生產者和消費者都參與訊息的傳遞。生產者發布事件,而使用者訂閱感興趣的事件,並使用事件。該型別訊息一般與特定的主題(j**ax.jms.topic)關聯。

3.模型

j**a訊息服務應用程式結構支援兩種模型:

點對點或佇列模型 point-to-point(p2p)

發布者/訂閱者模型 publish/subscribe(pub/sub)

1.p2p模式圖:

2.涉及到的概念

1.  訊息佇列(queue)

2. 傳送者(sender)

3. 接收者(receiver)

4. 每個訊息都被傳送到乙個特定的佇列,接收者從佇列中獲取訊息。佇列保留著訊息,直到他們被消費或超時。

3.p2p的特點

1.每個訊息只有乙個消費者(consumer)(即一旦被消費,訊息就不再在訊息佇列中)

2.傳送者和接收者之間在時間上沒有依賴性,也就是說當傳送者傳送了訊息之後,不管接收者有沒有正在執行,它不會影響到訊息被傳送到佇列

3.接收者在成功接收訊息之後需向佇列應答成功

1.pub/sub模式圖

2.涉及到的概念

主題(topic)

發布者(publisher)

訂閱者(subscriber)

客戶端將訊息傳送到主題。多個發布者將訊息傳送到topic,系統將這些訊息傳遞給多個訂閱者。

3.pub/sub的特點

每個訊息可以有多個消費者。

發布者和訂閱者之間有時間上的依賴性。針對某個主題(topic)的訂閱者,它必須建立乙個訂閱者之後,才能消費發布者的訊息,而且為了消費訊息,訂閱者必須保持執行的狀態。

為了緩和這樣嚴格的時間相關性,jms允許訂閱者建立乙個可持久化的訂閱。這樣,即使訂閱者沒有被啟用(執行),它也能接收到發布者的訊息。

4.傳遞方式

jms有兩種傳遞訊息的方式。標記為non_persistent的訊息最多投遞一次,而標記為persistent的訊息將使用暫存後再轉送的機理投遞。如果乙個jms服務離線,那麼永續性訊息不會丟失但是得等到這個服務恢復聯機時才會被傳遞。所以預設的訊息傳遞方式是非永續性的。即使使用非永續性訊息可能降低內務和需要的儲存器,並且這種傳遞方式只有當你不需要接收所有的訊息時才使用。

jms定義了五種不同的訊息正文格式,以及呼叫的訊息型別,允許你傳送並接收以一些不同形式的資料,提供現有訊息格式的一些級別的相容性。

streammessage -- j**a原始值的資料流

mapmessage--一套名稱-值對

textmessage--乙個字串物件

objectmessage--乙個序列化的 j**a物件

bytesmessage--乙個未解釋位元組的資料流

二:訊息中介軟體概述

1.mom概述

mom(message oriented middleware)是面向訊息的中介軟體,使用訊息傳送提供者來協調訊息傳送操作。mom 需要提供 api 和管理工具。客戶端使用api呼叫,把訊息傳送到由提供者管理的目的地。在傳送訊息之後,客戶端會繼續執行其他工作,並且在接收方收到這個訊息確認之前,提供者一直保留該訊息。

2.訊息中介軟體產生的背景

在客戶端與伺服器進行通訊時.客戶端呼叫後,必須等待服務物件完成處理返回結果才能繼續執行。

客戶與伺服器物件的生命週期緊密耦合,客戶程序和服務物件程序都都必須正常執行;如果由於服務物件崩潰或者網路故障導致使用者的請求不可達,客戶會受到異常。

點對點通訊:客戶的一次呼叫只傳送給某個單獨的目標物件。

3.什麼是訊息中介軟體

面向訊息的中介軟體(messageorlented middlewaremom)較好的解決了以上問題。傳送者將訊息傳送給訊息伺服器,訊息伺服器將訊息存放在若千佇列中,在合適的時候再將訊息**給接收者。

這種模式下,傳送和接收是非同步的,傳送者無需等待; 二者的生命週期未必相同: 傳送訊息的時候接收者不一定執行,接收訊息的時候傳送者也不一定執行;一對多通訊: 對於乙個訊息可以有多個接收者。

三:springboot整合activemq

springboot2.0整合activemq:

1.引入依賴

org.springframework.boot

spring-boot-starter-web

org.springframework.boot

spring-boot-starter-activemq

2.配置yml檔案
spring:

activemq:

broker-url: tcp:

user: admin

password: admin

my_queue: springboot-queue

server:

port: 8080

3.建立queueconfig類
@configuration

public class queueconfig ")

private string myqueue;

//首先將佇列注入到springboot容器中去

@bean

public queue logqueue()

}

4.建立producer類
@component

public class producer

}

5.建立consumer類

另外新建乙個springboot工程,pom檔案相同。yaml檔案中服務埠號與第乙個不同。

spring:

activemq:

broker-url: tcp:

user: admin

password: admin

my_queue: springboot-queue

server:

port: 8081

@component

public class consumer ")

public void receive(string msg)

}

ActiveMQ 基本使用

原文 activemq介紹 mq是訊息中介軟體,是一種在分布式系統中應用程式藉以傳遞訊息的媒介,常用的有activemq,rabbitmq,kafka。activemq是apache下的開源專案,完全支援jms1.1和j2ee1.4規範的jms provider實現。特點 1 支援多種語言編寫客戶端...

ActiveMq 介紹與使用

一 activemq 是什麼?基於jms的訊息中介軟體。二 activemq 能做什麼?客戶端與服務端的通訊,解決非同步通訊和減少併發壓力。三 activemq 如何使用?安裝 使用場景 例如 使用者使用某電商專案,傳送請求,需要處理 積分增加,庫存減少,銷量增加等 利用activemq 將訊息傳送...

ImageLoader 基本介紹及使用

imageloaderconfiguration是載入器imageloader的配置引數,使用了建造者模式,這裡是直接使用了createdefault 方法建立乙個預設的imageloaderconfiguration,當然我們還可以自己設定imageloaderconfiguration 之前我以...