JMS 基礎

来源:http://www.cnblogs.com/loveincode/archive/2017/10/19/JMS_Basics.html
-Advertisement-
Play Games

1. JMS基本概念 JMS(Java Message Service) 即Java消息服務。它提供標準的產生、發送、接收消息的介面簡化企業應用的開發。 它支持兩種消息通信模型:點到點(point-to-point)(P2P)模型和發佈/訂閱(Pub/Sub)模型。 P2P 模型規定了一個消息只能有 ...


1. JMS基本概念

JMS(Java Message Service) 即Java消息服務。它提供標準的產生、發送、接收消息的介面簡化企業應用的開發。
它支持兩種消息通信模型:點到點(point-to-point)(P2P)模型和發佈/訂閱(Pub/Sub)模型。
P2P 模型規定了一個消息只能有一個接收者;Pub/Sub 模型允許一個消息可以有多個接收者。

對於點到點模型,消息生產者產生一個消息後,把這個消息發送到一個Queue(隊列)中,然後消息接收者再從這個Queue中讀取,
一旦這個消息被一個接收者讀取之後,它就在這個Queue中消失了,所以一個消息只能被一個接收者消費。

與點到點模型不同,發佈/訂閱模型中,消息生產者產生一個消息後,把這個消息發送到一個Topic中,這個Topic可以同時有多個接收者在監聽,
當一個消息到達這個Topic之後,所有消息接收者都會收到這個消息。

簡單的講,點到點模型和發佈/訂閱模型的區別就是前者是一對一,後者是一對多

2. 幾個重要概念

Destination: 消息發送的目的地,也就是前面說的Queue和Topic。創建好一個消息之後,只需要把這個消息發送到目的地,消息的發送者就可以繼續做自己的事情,而不用等待消息被處理完成。至於這個消息什麼時候,會被哪個消費者消費,完全取決於消息的接受者。

Message: 從字面上就可以看出是被髮送的消息。它有下麵幾種類型:
  StreamMessage: Java 數據流消息,用標準流操作來順序的填充和讀取。
  MapMessage:一個Map類型的消息;名稱為 string 類型,而值為 Java 的基本類型。
  TextMessage:普通字元串消息,包含一個String。
  ObjectMessage:對象消息,包含一個可序列化的Java 對象
  BytesMessage:二進位數組消息,包含一個byte[]。
  XMLMessage: 一個XML類型的消息。
最常用的是TextMessageObjectMessage

Session: 與JMS提供者所建立的會話,通過Session我們才可以創建一個Message。

Connection: 與JMS提供者建立的一個連接。可以從這個連接創建一個會話,即Session。

ConnectionFactory: 那如何創建一個Connection呢?這就需要下麵講到的ConnectionFactory了。通過這個工廠類就可以得到一個與JMS提供者的連接,即Conection。

Producer:消息的生產者,要發送一個消息,必須通過這個生產者來發送。

MessageConsumer:與生產者相對應,這是消息的消費者或接收者,通過它來接收一個消息。

前面多次提到JMS提供者,因為JMS給我們提供的只是一系列介面,當我們使用一個JMS的時候,還是需要一個第三方的提供者,
它的作用就是真正管理這些Connection,Session,Topic和Queue等。

通過下麵這個簡圖可以看出上面這些概念的關係。

ConnectionFactory----->Connection----->Session----->Message
Destination + Session----------------------------->Producer
Destination + Session----------------------------->MessageConsumer

那麼可能有人會問: ConnectionFactory 和 Destination 從哪兒得到?
這就和JMS提供者有關了. 如果在一個JavaEE環境中, 可以通過JNDI(Java命名和目錄介面(the Java naming and directory interface,JNDI)是一組在Java應用中訪問命名和目錄服務的API。)查找得到, 如果在一個非JavaEE環境中, 那隻能通過JMS提供者提供給我們的介面得到了.

原文:http://blog.itpub.net/10742815/viewspace-578446/


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • MemLoadDll.h MemLoadDll.cpp ...
  • 轉自:http://blog.csdn.net/jxufewbt/article/details/1769312 應用程式之間的數據交換(互相通訊)一直是困擾廣大程式員的難題,儘管已經出現了各式各樣的解決方案,但迄今為止沒有哪一種方案是完美無缺的。因此,只有學習並瞭解了它們的優缺點後,才能在特定的情 ...
  • string param = "<xml>" +"<ToUserName><![CDATA[toUser]]></ToUserName>" +"<FromUserName><![CDATA[fromUser]] ></FromUserName>" +"<CreateTime> 1348831860 ...
  • 很多C 的初學者都會有這麼一個疑問, .Net程式代碼是如何被機器載入執行的? 最簡單的解答是, C 會通過編譯器(CodeDom, Roslyn)編譯成IL代碼, 然後CLR(.Net Framework, .Net Core, Mono)會把這些IL代碼編譯成目標機器的機器代碼並執行. 相信大多 ...
  • 30分鐘?不需要,輕鬆讀懂IL http://www.cnblogs.com/brookshi/p/5225801.html IL指令詳細 http://www.cnblogs.com/zery/p/3368460.html 進階篇:以IL為劍,直指async/await http://www.cn ...
  • 前言:去年剛工作的時候,也是剛剛正式接觸.net,當時瞭解了EF以及三種開發模式,Database First、Model First 、Code First。公司用的開發模式是Database First,由於公司有一套成熟的框架,我只需要按部就班的開發即可,因此就沒有詳細學習過這些開發模式,總覺 ...
  • C#多線程 一、使用線程的理由 1、可以使用線程將代碼同其他代碼隔離,提高應用程式的可靠性。 2、可以使用線程來簡化編碼。 3、可以使用線程來實現併發執行。 二、基本知識 1、進程與線程:進程作為操作系統執行程式的基本單位,擁有應用程式的資源,進程包含線程,進程的資源被線程共用,線程不擁有資源。 2 ...
  • 自己上網查了好多種方法,最後還是選了這種不收費,還挺好用的方法 為了用戶有一個好的體驗我將word、excel、ppt轉Pdf,Pdf轉Swf寫在服務上,因為我當時做的時候Pdf轉Swf會執行pdf2swf.exe彈出黑框,對用戶體驗不好,還有就是ppt轉swf時會有一個彈出框,提示正在發佈,我沒搞 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...