jms mdb_MDB!= JMS,反之亦然
生活随笔
收集整理的這篇文章主要介紹了
jms mdb_MDB!= JMS,反之亦然
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
jms mdb
基本
- 消息驅動Bean(又稱為MDB)只是另一個EJB,例如無狀態,有狀態或單例。 使用@MessageDriven批注指定。
- MDB用于異步消息處理
- 它們與無狀態EJB 相似 ,因為它們都是由EJB容器池化的
- 但是,它們與無狀態EJB不同,因為客戶端無法直接訪問 MDB。 只有容器會響應客戶端發送到MDB正在偵聽的端點的消息來調用它們。
MDB的常用模式
- MDB通常與JMS(Java消息服務API)一起使用
- MDB配置為使用@ActivationConfigProperty偵聽JMS目標,實現javax.jms.MessageListener接口,并在onMessage方法中提供業務邏輯(消息處理)
- 組件將消息發送到JMS目標( 端點 )。 這不是一個同步過程(如上所述)。 消息觸發方法立即返回,容器負責調用配置為偵聽該特定JMS目標的MDB
基于JMS的MDB
MDB神話
- MDB 不屬于JMS規范的一部分, 也不以任何方式與JMS 耦合 –這是一個誤解。
- MDB是池化的bean,可以以異步方式處理消息,并且可以偵聽任何端點,包括JMS隊列或目的地 (通常可見)。
- 實際上,從EJB 2.1開始就是這種情況,并且通過JCA(Java連接器體系結構)規范得以實現
什么是JCA?
- 在較高的層次上,JCA使Java EE服務器可以通過標準SPI與外部系統(例如,舊企業信息源等)進行交互(此處不處理復雜的JCA詳細信息)
- 可以使用JCA標準接口為特定系統構建資源適配器(RAR文件)
- JCA為Java EE容器和外部系統之間的雙向通信(入站和出站)提供合同-資源適配器本身需要實現該實現
禮貌:JCA規范文檔
JCA如何實現通用MDB的概念?
- JCA定義了MDB特定的功能
- 就像在基于JMS的MDB中一樣,基于JCA的MDB也需要實現一個接口并定義激活屬性(兩者都特定于JCA Resource Adapter實現)
- 外部系統發送一條消息,資源適配器通過其入站JCA合同的實現接受該消息,并將該消息中繼到內部端點(這又是特定于JCA適配器實現的)
- 注冊到此端點的MDB會在接收到的消息上執行業務邏輯
基于JCA的MDB
最終結果
外部系統使用標準接口(JCA)將消息發送到Java EE容器,而JCA實現則負責將其傳遞到適當的端點,該端點進一步將其傳遞給已注冊的MDB
需要注意的是,由于EJB規范供應商必須支持基于JCA的MDB,因此它在Java EE服務器之間是完全可移植的 。
進一步閱讀
- JCA規范
- JMS規范
- EJB規范
翻譯自: https://www.javacodegeeks.com/2015/01/mdb-jms-and-vice-versa.html
jms mdb
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的jms mdb_MDB!= JMS,反之亦然的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 小身材高颜值,小新Air14满足你多方面
- 下一篇: 2022年5月电脑配置推荐及搭配建议(配