什麼是訊息
#鬆散耦合的非同步通訊過程
1. 面向訊息的中間件(MOM): 訊息發送者稱為生產者; 儲存訊息的位置稱為目的地; 接受訊息的元件稱為消費者
2. 訊息模型:
a. 點對點:目的地成為佇列,訊息只能被消費一次
b. 發佈-訂閱:目的地成為主體,消費者稱為訂閱者,訊息能被任意數量消費
# Java訊息服務
1. JMS API:提供使用Java存取MOM(訊息中介軟體)的統一標準方式
2. 開發訊息生產者流程:
a. 使用依賴注入,取得連線工廠ConnectionFactory和目的地Destination物件
b. 使用連接工廠的createConnection開啟連線Connection
#
c. 使用連線Connection的createSession建立會話Session並指定交易參數
d. 使用會話Session的createProducer建立貨運佇列Producer
#
e. 使用會話Session的createMessage建立訊息Message並設定
f. 使用貨運隊列Producer的send發送訊息
g. 釋放資源
注意: 以上流程是基於JavaEE 6 的情況下, JavaEE 7 提供了更簡易的A開發流程
3. Message介面: 訊息頭, 訊息屬性, 訊息體; 實作類別: ObjectMessage傳遞物件, ByteMessage傳遞位元組, MapMessage傳遞Map, StreamMessage傳遞流資料, TextMessage傳遞文字
訊息驅動bean(MDB)
# 1. 優點:多執行緒,簡化的訊息代碼
2. 設計原則:
a. MDB類別必須直接或間接實作訊息監聽器介面
b. 必須是具體的公開的,不能是final和抽象類別
c. 必須是POJO,不能是另一個MDB的子類別
d. 必須有無參的建構者
e. 不能有final方法
f. 不能拋出任何運行時異常,因為當拋出是MDB實例將被終止
3. 使用MDB開發消費者流程
a. 使用註解@MessageDriven把類別標記為MDB並且指定MDB配置
b. 實作MessageListener介面, 並實作onMessage方法
c. 在onMessage中實作邏輯
# 4. @MessageDriven: 註解被註解的類別為MDB, 此註解有3個參數, name指定MDB的名稱, messageListenerInterface指定MDB實作的訊息介面(可以直接在類別上implements介面), activationConfig用於指定專有的配置屬性
5. MessageLisener: 把MDB註冊為訊息消費者, 可依不同場景實現不同監聽器介面
6. ActivationConfigProperty: 配置訊息系統的設定資訊
a. destinationType: 通知容器該MDB監聽的是佇列還是主題
b. connectionFactoryJndiName: 指定用於建立MDB的JMS連接的連接工廠JDNI
c. destianName: 指定正在監聽的目的地
d. acknowledgeMode: 指定JMS會話確認模式
e. subscriptionDurability: 用於設定為持久訂閱者
f. messageSelector: 過濾訊息
#
7. MDB生命週期:
a. 建立MDB實例並設定它們
b. 注入資源
c. 存放到受管理的池中
d. 當偵測到訊息到達時監聽的目的地時,從池中取出空閒bean
e. 執行訊息監聽器方法,即onMessage方法
f. 當onMessage方法執行完畢,把空閒bean存回池中
g. 根據需求從池中撤銷/銷毀bean
8. 從MDB發送訊息: 從JNDI注入佇列, 連接工廠物件, 然後和Java訊息一樣的操作
9. 管理事務: 正常情況下, 在onMessage方法前開啟事務, 方法結束時提交事務. 可以透過訊息上下文物件rollback交易
MDB最佳實務
1. 根據使用情況選擇是否使用MDB
# 2. 選擇訊息模型: 應在程式設計時決定是PTP還是發布-訂閱, 但幸運的是, 兩者間切換僅僅需要修改配置即可
3. 保持模組化: MDB的onMessage方法不應該處理業務邏輯, 業務邏輯應該放在對應的會話bean, 並註入MDB, MDB負責呼叫對應的會話bean
4. 根據場景充分使用濾鏡或分割目的地
5. 選擇訊息類型: 根據使用場景選擇傳輸時使用的訊息類型
# 6. 警惕有毒消息: 無法消費但又回滾了的消息會陷入無限循環的接收/回滾中, 雖然個別廠商有自己的處理死消息的實現, 但是在編程的時候要注意
7. 配置MDB池額大小: 根據場景與需求配置
參考
EJB 3 in Action, Second Edition
以上是 什麼是訊息鬆散耦合的非同步通訊過程?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

Dreamweaver CS6
視覺化網頁開發工具

Atom編輯器mac版下載
最受歡迎的的開源編輯器

禪工作室 13.0.1
強大的PHP整合開發環境

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中