日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java之JMS

發布時間:2023/12/4 java 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java之JMS 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一:JMS簡介
??JMS即Java消息服務(Java Message Service),是一個Java平臺定義的關于面向消息中間件的API,用于在兩個應用程序之間,或分布式系統中發送消息,進行異步通信。JMS是一個與具體平臺無關的API,絕大多數MOM提供商都對JMS提供支持。
??JMS允許應用程序組件基于JavaEE平臺創建、發送、接收和讀取消息。它使分布式通信耦合度更低,消息服務更加可靠。

二:常用術語

  • 消息中間件(JMS Provider):指實現了JMS協議的第三方組件,如ActiveMQ、RocketMQ、RabbitMQ、Kafka等
  • 消息模式:分為點對點(Point to Point,即P2P)和發布/訂閱(Pub/Sub),對應的數據結構分別為隊列(Queue)和主題(Topic)
  • 消息(Message):通信內容的載體,其結構主要分為消息頭、屬性、消息體,并且根據存儲結構的不同而分別幾類,后續再展開
  • 消息生產者:產生消息的一方,對應兩種消息模式分別為消息的發送方(Sender)、消息發布者(Publisher)
  • 消息的消費方:接收消息的一方,對應兩種模式分別為消息的接收者(Receiver)、消息訂閱者(Subscriber)
  • 三:JMS基本概念及原理解析

    1、基本概念
    JMS是Java的消息服務,JMS的客戶端之間可以通過JMS服務進行異步的消息傳輸。

    2、體系架構
    JMS由以下元素組成
    1.JMS提供者
    連接面向消息中間件的JMS的接口的實現。無關語言,可以是非Java的。
    2.JMS客戶
    生產或消費消息的基于Java的應用程序或對象
    3.JMS生產者
    創建并發送消息的JMS客戶
    4.JMS消費者
    接收消息的JMS客戶
    5.JMS隊列
    一個容納等待被消費的消息的區域。隊列的特性,按順序,先進先出,消費后會移除隊列
    6.JMS主題
    一種支持發送消息給多個訂閱者的機制

    3、JMS消息模型
    1. P2P,Point-to-Point
    2. Pub/Sub,Publish/Subscribe

    4、P2P詳解
    1.P2P介紹

    2.P2P的特點

    • 每條消息只能成功消費一次(即一旦被消費,消息就不再在消息隊列中)
    • 提供者、消費者解耦,無論有沒有消費者,都不影響提供者發送消息到消息隊列
    • 每條消息僅會被一個消費者消費。可能會有多個消費者在監聽同一個隊列,但是隊列中的消息僅會被一個消費者消費
    • 消息存在先后順序。隊列的特性,先進先出
    • 消費者在成功接受消息之后需向隊列應答成功

    5、Pub/Sub(發布/訂閱 模式)
    1.Pub/Sub模式圖

    2.Pub/Sub的特點

    • 每個消息可以有多個消費者
    • 發布者和訂閱者之間有時間上的依賴性。針對某個主題的訂閱者,它必須創建一個訂閱者之后,才能消費發布者的消息,而且為了消費消息,訂閱者必須保持運行的狀態
    • 為了緩和這樣嚴格的時間相關性,JMS允許訂閱者創建一個可持久化的訂閱。這樣,即使訂閱者沒有被激活(運行),它也能接收到發布者的消息
    • 每條消息都會傳送給稱為訂閱者的多個消息消費者。訂閱者有許多類型,包括持久型、非持久型和動態型
    • 發布者通常不會知道、也意識不到哪一個訂閱者正在接收主題消息
    • 消息被推送給消費者,這意味著消息會傳送給消費者,而無須請求

    6、消息的消費
    JMS中,消息的產生和消費是異步的。有兩種方式消費消息:
    1.同步:訂閱/消費者調用receive方法來接收消息,receive方法在接收到消息/超時之前,一直阻塞
    2.異步:訂閱/消費者注冊為消息監聽者。消息到達后,系統自動調用監聽器的onMessage方法

    7、JMS應用程序接口
    1.ConnectionFactory接口(連接工廠)
    創建Connection對象的工廠,根據消息類型的不同,分為QueueConnectionFactory、TopicConnectionFactory兩種。可以通過JNDI來查找ConnectionFactory
    2.Destination接口
    Destination是包裝了消息目標標識符的對象,消息目標指的是消息發布和接收的地點(隊列、主題)。可以通過JNDI查找Destination
    3.Connection接口
    Connection表示在客戶端和JMS系統之間建立的連接(對TCP/IP socket的包裝)
    Connection可以產生一個或多個的Session。分為QueueConnection、TopicConnection
    4.Session接口
    Session是我們操作消息的接口,表示一個單線程的上下文,用于發送和接收消息。由于會話是單線程的,所以消息是連續的,就是說消息是按照發送的順序一個一個接收的。
     可以通過session創建生產者、消費者、消息等。Session提供了事務的功能。當我們需要使用session發送/接收多個消息時,可以將這些發送/接收動作放到一個事務中。
     同樣,也分QueueSession和TopicSession。
     5.MessageProducer 接口(消息的生產者)
     消息生產者由Session創建,并用于將消息發送到Destination。消費者可以同步地(阻塞模式),或異步(非阻塞)接收隊列和主題類型的消息。
     同樣,消息生產者分兩種類型:QueueSender和TopicPublisher。可以調用消息生產者的方法(send或publish方法)發送消息。
     6.MessageConsumer 接口(消息消費者)
     消息消費者由Session創建,用于接收被發送到Destination的消息。兩種類型:QueueReceiver和TopicSubscriber。
     可分別通過session的createReceiver(Queue)或createSubscriber(Topic)來創建。
     當然,也可以session的creatDurableSubscriber方法來創建持久化的訂閱者。
     7.Message 接口(消息)
     是在消費者和生產者之間傳送的對象,也就是說從一個應用程序創送到另一個應用程序。一個消息有三個主要部分:
     1、消息頭(必須):包含用于識別和為消息尋找路由的操作設置。
     2、一組消息屬性(可選):包含額外的屬性,支持其他提供者和用戶的兼容。可以創建定制的字段和過濾器(消息選擇器)。
     3、一個消息體(可選):允許用戶創建五種類型的消息(文本消息,映射消息,字節消息,流消息和對象消息)。消息接口非常靈活,并提供了許多方式來定制消息的內容。
    消息接口非常靈活,并提供了許多方式來定制消息的內容。
     8.MessageListener
     消息監聽器。如果注冊了消息監聽器,一旦消息到達,將自動調用監聽器的onMessage方法。
     EJB中的MDB(Message-Driven Bean)就是一種MessageListener。

    四:JMS的提供者實現

    使用Java消息服務,你必須要有一個JMS提供者,管理會話和隊列。現在既有開源的提供者也有專有的提供者。
    開源的提供者包括:Apache ActiveMQ、Kafka、WebMethods、阿里的RocketMQ等

    參考:
    https://www.cnblogs.com/chenpi/archive/2016/06/06/5559349.html
    http://www.cnblogs.com/molao-doing/articles/6557305.html

    總結

    以上是生活随笔為你收集整理的Java之JMS的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。