<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    厚積而薄發(fā)

    山不辭土,故能成其高;海不辭水,故能成其深!
    posts - 15, comments - 0, trackbacks - 0, articles - 1
    1. JMS基本概念
         JMS(Java Message Service) 即Java消息服務(wù)。它提供標(biāo)準(zhǔn)的產(chǎn)生、發(fā)送、接收消息的接口簡(jiǎn)化企業(yè)應(yīng)用的開(kāi)發(fā)。它支持兩種消息通信模型:點(diǎn)到點(diǎn)(point-to-point)(P2P)模型和發(fā)布/訂閱(Pub/Sub)模型。P2P 模型規(guī)定了一個(gè)消息只能有一個(gè)接收者;Pub/Sub 模型允許一個(gè)消息可以有多個(gè)接收者。
        對(duì)于點(diǎn)到點(diǎn)模型,消息生產(chǎn)者產(chǎn)生一個(gè)消息后,把這個(gè)消息發(fā)送到一個(gè)Queue(隊(duì)列)中,然后消息接收者再?gòu)倪@個(gè)Queue中讀取,一旦這個(gè)消息被一個(gè)接收者讀取之后,它就在這個(gè)Queue中消失了,所以一個(gè)消息只能被一個(gè)接收者消費(fèi)。
        與點(diǎn)到點(diǎn)模型不同,發(fā)布/訂閱模型中,消息生產(chǎn)者產(chǎn)生一個(gè)消息后,把這個(gè)消息發(fā)送到一個(gè)Topic中,這個(gè)Topic可以同時(shí)有多個(gè)接收者在監(jiān)聽(tīng),當(dāng)一個(gè)消息到達(dá)這個(gè)Topic之后,所有消息接收者都會(huì)收到這個(gè)消息。
         
    簡(jiǎn)單的講,點(diǎn)到點(diǎn)模型和發(fā)布/訂閱模型的區(qū)別就是前者是一對(duì)一,后者是一對(duì)多。
    2. 幾個(gè)重要概念
       Destination:消息發(fā)送的目的地,也就是前面說(shuō)的Queue和Topic。創(chuàng)建好一個(gè)消息之后,只需要把這個(gè)消息發(fā)送到目的地,消息的發(fā)送者就可以繼續(xù)做自己的事情,而不用等待消息被處理完成。至于這個(gè)消息什么時(shí)候,會(huì)被哪個(gè)消費(fèi)者消費(fèi),完全取決于消息的接受者。
      Message:從字面上就可以看出是被發(fā)送的消息。它有下面幾種類(lèi)型:
            StreamMessage:Java 數(shù)據(jù)流消息,用標(biāo)準(zhǔn)流操作來(lái)順序的填充和讀取。
            MapMessage:一個(gè)Map類(lèi)型的消息;名稱(chēng)為 string 類(lèi)型,而值為 Java 的基本類(lèi)型。
            TextMessage:普通字符串消息,包含一個(gè)String。
            ObjectMessage:對(duì)象消息,包含一個(gè)可序列化的Java 對(duì)象
            BytesMessage:二進(jìn)制數(shù)組消息,包含一個(gè)byte[]。
            XMLMessage: 一個(gè)XML類(lèi)型的消息。
        最常用的是TextMessage和ObjectMessage。
       Session:與JMS提供者所建立的會(huì)話,通過(guò)Session我們才可以創(chuàng)建一個(gè)Message。
       Connection:與JMS提供者建立的一個(gè)連接。可以從這個(gè)連接創(chuàng)建一個(gè)會(huì)話,即Session。
       ConnectionFactory:那如何創(chuàng)建一個(gè)Connection呢?這就需要下面講到的ConnectionFactory了。通過(guò)這個(gè)工廠類(lèi)就可以得到一個(gè)與JMS提供者的連接,即Conection。
       Producer:消息的生產(chǎn)者,要發(fā)送一個(gè)消息,必須通過(guò)這個(gè)生產(chǎn)者來(lái)發(fā)送。
       MessageConsumer:與生產(chǎn)者相對(duì)應(yīng),這是消息的消費(fèi)者或接收者,通過(guò)它來(lái)接收一個(gè)消息。
        前面多次提到JMS提供者,因?yàn)镴MS給我們提供的只是一系列接口,當(dāng)我們使用一個(gè)JMS的時(shí)候,還是需要一個(gè)第三方的提供者,它的作用就是真正管理這些Connection,Session,Topic和Queue等。

        通過(guò)下面這個(gè)簡(jiǎn)圖可以看出上面這些概念的關(guān)系。

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


        那么可能有人會(huì)問(wèn): ConnectionFactory和Destination 從哪兒得到?
        這就和JMS提供者有關(guān)了. 如果在一個(gè)JavaEE環(huán)境中, 可以通過(guò)JNDI查找得到, 如果在一個(gè)非JavaEE環(huán)境中, 那只能通過(guò)JMS提供者提供給我們的接口得到了.

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 毛片免费观看网址| 日本免费大黄在线观看| 在线免费观看中文字幕| 亚洲日韩国产精品乱-久| 真人做A免费观看| 亚洲国产精品一区二区三区在线观看| 99国产精品免费视频观看| 亚洲综合在线观看视频| 91制片厂制作传媒免费版樱花| 久久精品国产亚洲av四虎| 午夜老司机永久免费看片| 亚洲综合自拍成人| 无码日韩精品一区二区免费| 456亚洲人成在线播放网站| 午夜毛片不卡高清免费| 性色av极品无码专区亚洲| 亚洲色偷偷狠狠综合网| 日本在线免费播放| 亚洲无限乱码一二三四区| 夜夜嘿视频免费看| 国产特黄特色的大片观看免费视频 | 香港a毛片免费观看| 亚洲精品在线网站| 好男人看视频免费2019中文 | 国产无遮挡无码视频免费软件| 亚洲AV无码精品色午夜在线观看| 99精品视频在线视频免费观看| 亚洲a级在线观看| 国产jizzjizz视频免费看| 国产成在线观看免费视频| 久久亚洲精品无码gv| 亚洲人成图片小说网站| 亚洲精品视频免费在线观看| 亚洲人成欧美中文字幕| 亚洲精品视频久久久| 99视频在线免费| 农村寡妇一级毛片免费看视频| 久久久久亚洲av无码专区导航| 好男人www免费高清视频在线 | 国产va在线观看免费| 亚洲久热无码av中文字幕|