JAVA的設計模式之觀察者模式----結合ActiveMQ消息隊列說明


1----------------------觀察者模式------------------------------

觀察者模式:定義對象間一對多的依賴關系,當一個對象的狀態發生改變時,所有依賴於它的對象都得到通知自動更新。 activeMQ消息隊列

 

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

 

2、-------------JMS介紹-----------------------

 

JMS的全稱是Java Message Service,即Java消息服務。用於在兩個應用程序之間,或分布式系統中發送消息,進行異步通信

 

它主要用於在生產者和消費者之間進行消息傳遞,生產者負責產生消息,而消費者負責接收消息。

把它應用到實際的業務需求中的話我們可以在特定的時候利用生產者生成一消息,並進行發送,對應的消費者在接收到對應的消息后去完成對應的業務邏輯。

 

對於消息的傳遞有兩種類型

 

一種是點對點的,即一個生產者和一個消費者一一對應;

 

另一種是發布/訂閱模式,即一個生產者產生消息並進行發送后,可以由多個消費者進行接收。

 

3、---------------------ActiveMQ安裝-----------------------------------------------

 

進入http://activemq.apache.org/下載ActiveMQ

 安裝

安裝步驟:

第一步:安裝jdk,需要jdk1.7以上版本

第二步:解壓縮activeMQ的壓縮包。

第三步:進入bin目錄。

啟動:[root@localhost bin]# ./activemq start

停止:[root@localhost bin]# ./activemq stop

第四步:訪問后台管理。

http://192.168.25.168:8161/admin

用戶名:admin

密碼:admin

 

4、----------------------------- JMS消息發送模式------------------------------------------------------------------

(1)在點對點或隊列模型下,一個生產者向一個特定的隊列發布消息,一個消費者從該隊列中讀取消息。這里,生產者知道消費者的隊列,並直接將消息發送到消費者的隊列。

這種模式被概括為:只有一個消費者將獲得消息。生產者不需要在接收者消費該消息期間處於運行狀態,接收者也同樣不需要在消息發送時處於運行狀態。每一個成功處理的消息都由接收者簽收。

(2)發布者/訂閱者模型支持向一個特定的消息主題發布消息。0或多個訂閱者可能對接收來自特定消息主題的消息感興趣。在這種模型下,發布者和訂閱者彼此不知道對方。這種模式好比是匿名公告板。

這種模式被概括為:多個消費者可以獲得消息.在發布者和訂閱者之間存在時間依賴性。發布者需要建立一個訂閱(subscription),以便客戶能夠購訂閱。訂閱者必須保持持續的活動狀態以接收消息,

除非訂閱者建立了持久的訂閱。在那種情況下,在訂閱者未連接時發布的消息將在訂閱者重新連接時重新發布。

 

5、----------------------------------Active整合spring-----------------------------------------------------

 

ActiveMQ依賴的jar包添加到工程中。

 

activemq-all-5.12.0.jar

 

使用maven工程,則添加jar包的依賴:

 

<dependency>

 

<groupId>org.apache.activemq</groupId>

 

<artifactId>activemq-all</artifactId>

 

<version>5.11.2</version>

 

</dependency>

同時需要配置生產消息者和消費消息者的配置 ----------------spring文件

 

6、-------------------------------消費者需要配置監聽--------------------------------------

那么消費者是通過Spring為我們封裝的消息監聽容器MessageListenerContainer實現的,它負責接收信息,並把接收到的信息分發給真正的MessageListener進行處理。每個消費者對應每個目的地都需要有對應的MessageListenerContainer

對於消息監聽容器而言,除了要知道監聽哪個目的地之外,還需要知道到哪里去監聽,也就是說它還需要知道去監聽哪個JMS服務器,這是通過在配置MessageConnectionFactory的時候往里面注入一個ConnectionFactory來實現的。

所以在配置一個MessageListenerContainer的時候有三個屬性必須指定:

1、一個是表示從哪里監聽的ConnectionFactory

2、一個是表示監聽什么的Destination

3、一個是接收到消息以后進行消息處理的MessageListener

常用的MessageListenerContainer實現類是DefaultMessageListenerContainer

 

 

public class MyMessageListener implements MessageListener {

 

      @Override

 

   public void onMessage(Message message) {

 

System.out.println(message);

 

}

 

}

 

 

總結:當我們去處理某些數據的時候,添加或者刪除等給數據做出了一些修改,我們需要對關聯這些數據的地方做出相應的修改,使用activeMQ消息隊列可以幫助我們實現這一功能。

        這里所運用到的JAVA的設計模式也就是我們所說的觀察者模式,當然,消息隊列中體現了一些其他的設計模式,比如裝飾者模式等。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM