消息中間件學習筆記

                                                         中間件基本概念

什麼是中間件?

    非底層操作系統軟件,非業務應用軟件,不是直接給最終用戶使用的,不能直接給客戶帶來價值的軟件統稱爲中間件。

什麼是消息中間件?

    關注於數據的發送和接受,利用高效可靠的異步消息傳遞機制集成分佈式系統。

什麼是JMS?

    Java消息服務(Java Message Service)即JMS,是一個Java平臺中關於面向消息中間件的API,用於在兩個應用程序之間,或分佈式系統中發送消息,進行異步通信。

什麼事AMQP?

    AMQP(advanced message queuing protocol)是一個提供統一消息服務的應用層標準協議,基於此協議的客戶端與消息中間件可傳遞消息,並不受客戶端/中間件不同產品,不同開發語言等 條件的限制

                                                               常見消息中間件對比

ActiveMQ

    ActiveMQ是Apache公司出品,最流行的,能力強勁的開源消息總線。ActiveMQ是一個完全支持JMS1.1和J2EE1.4規範的JMS Provider實現,儘管JMS規範出臺已經是很久的事情了,但是JMS在當今的J2EE應用中間仍然扮演者特殊的地位。

  特性:

    多種語言和協議編寫客戶端。語言:Java,C,C++,C#,Rubt,Perl,Python,PHP。應用協議:OpenWire,Stomp REST,WS Notification,XMPP,AMQP

    完全支持JMS1.1和J2EE 1.4規範(持久化,XA消息,事務)

    虛擬主題、組合目的、鏡像隊列

    消息持久化

RabbitMQ

    RabbitMQ是一個開源的AMQP實現,服務端採用Erlang語言編寫。用於在分佈式系統中存儲轉發消息,在易用性、擴展性、高可用性等方面表現不俗。

  特性:

    支持多種客戶端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript等

    AMQP的完整實現(vhost、Exchange、Binding、Routing Key等)

    事務支持/發佈確認

    消息持久化

    主要用於金融行業,對安全性穩定性要求極高!

Kafka

    Kafka是一種高吞吐量的分佈式發佈訂閱消息系統,是一個分佈式的、分區的、可靠的分佈式日誌存儲服務。它通過一種獨一無二的設計提供了一個消息系統的功能。

  特性:

    通過O(1)的磁盤數據結構提供消息的持久化,這種結構對於即使數以TB的消息村住也能狗保持長時間的穩定性能

    高吞吐量:即使是非常普通的硬件,Kafka也可以支持每秒數以百萬的消息。

    Partition、Consumer Group

JMS相關概念:

  提供者:實現JMS規範的消息中間件服務器

  客戶端:發送或接收消息的應用程序

  生產者/發佈者:創建併發送消息的客戶端

  消費者/訂閱者:接收並處理消息的客戶端

  消息:應用程序之間傳遞的數據內容

  消息模式:在客戶端之間傳遞消息的方式,JMS中定義了主題和隊列兩種模式

隊列模式:

  客戶端包括生產者和消費者

  隊列中的消息只能被一個消費者消費

  消費者可以隨時消費隊列中的消息

主題模型

  客戶端包括髮布者和訂閱者

  主題中的消息被所有訂閱者消費 

  消費者不能消費訂閱之前就發送到主題中的消息

JMS編碼接口

  ConnectionFactory 用於創建連接到消息中間件的連接工廠

  Connection 代表了應用程序和消息服務器之間的通信鏈路

  Destination 指消息發佈和接收的地點,包括隊列或主題

  Session 表示一個但縣城的上下文,用於發送和接收消息

  MessageConsumer 由會話創建,用於接收發送到目標的消息

  MessageProducer 由會話創建,用於發送消息到目標

  Message 是在消費者和生產者之間傳送的對象,消息頭,一組消息屬性,一個消息體

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章