java訊息佇列

來源:互聯網
上載者:User

標籤:寫日誌   資料庫   功能   速度   jms   發布訂閱   日誌   rabbitmq   strong   

歸納總結

JMS “ 一個中心,兩種模式,三步實現”

  • 1 以 Message Service器為中心
    訊息生產者 通過用戶端發訊息給Message Service器; 訊息消費者通過Message Service器接收訊息;
  • 2 兩種訊息發送模型
    兩種訊息發送模型規範:點對點、發布訂閱 ;
  • 3 實現方法分為三步
    3.1、 整合通訊伺服器,建立串連Connections ;
    3.2 、通過串連建立隊列會話session;
    3.3 、準備就緒後,執行 生產者 發訊息和消費者 接訊息(非同步)。

優點 解耦合、非同步

 

 

也就是你有一個程式在產生內容然後入隊(生產者)
另一個程式讀取內容,內容出隊(消費者)

 

 

訊息佇列典型應用情境:

比如你寫日誌,因為可能一個用戶端有多個操作去寫,又有很多個用戶端,顯然並發不能無窮大,於是你就需要把寫日誌的請求放入到訊息佇列裡,在消費者那邊依次把隊列中產生的日誌寫到資料庫裡。

至於怎麼實現訊息佇列,其實你本身一個普通的隊列就行呀~看你需要什麼附加功能而已。

 

訊息佇列有無數開源實現,一般沒必要自己實現。zmq也好rabbitmq也好甚至redis也好,找一個合適的裝上用就行

就好像rdbms/nosql一樣

技術都是解決問題的,訊息佇列解決的是將突發大量請求轉換為後端能承受的隊列請求,比如你的伺服器一秒能處理100個訂單,但秒殺活動1秒進來1000個訂單,持續10秒,在後端能力無法增加的情況下,你可以用訊息佇列將總共10000個請求壓在隊列裡,後台consumer按原有能力處理,100秒後處理完所有請求(而不是直接宕機丟失訂單資料)

所以說首先別自己實現訊息佇列(在你用過各種訊息佇列,還看過一兩份源碼之前),其次沒有合適的需求別用訊息佇列

 

 

通俗的說,就是一個容器,你把訊息丟進去,不需要立即處理。然後有個程式去從你的容器裡面把訊息一條條讀出來處理。
訊息佇列,可以是activeMQ,kafka之類的,也可以是資料庫的一張任務表。

個人覺得訊息佇列,主要有兩個作用:

    1. 降低耦合
    2. 訊息可以暫時存在在訊息佇列中,等待訊息接收者根據自身的負載處理能力控制處理訊息的處理速度,減小在大並發訪問時候的壓力。

java訊息佇列

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.