程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> Apache-ActiveMQ transport XmlMessage

Apache-ActiveMQ transport XmlMessage

編輯:C#入門知識

前言

本文原創,轉載請說明出處!

Apache-ActiveMQ:是Apache提供的一款開源的消息傳送服務,不論是安裝還是使用都非常簡單實用,可以作為消息緩存管理器來使用(個人觀點),看看ActiveMQ提供了什麼。

ActiveMQ提供兩種消息傳遞方式:Queues(隊列)和Topics(主題)。

這兩者的區別主要體現在獲取消息端,Queues方式下消息只能被獲取一次,也就是說多個消息獲取端不會獲得重復的信息。

Topics方式相當於訂閱,所有消息獲取端都可以獲得相同的消息。

相比之下,Queues更適合做負載均衡,讓多個消息獲取端處理一組消息;Topic適合作為消息分發或者消息多用途時使用。

ActiveMQ傳遞消息的種類包括:BytesMessage、ObjectMessage、TextMessage、XmlMessage,還有些不常用的MapMessagee、StreamMessage等。

接下來看具體的用法。

一、配置Apache-ActiveMQ

Apache-ActiveMQ的安裝和配置還是比較簡單的,先到官網下載Apache-ActiveMQ,本文使用的版本是5.5.1,據說比較穩定。

另外到這裡下載兩個bin包,裡面有對應的DLL,稍後會在項目中用到。

下載好以後,如果沒有安裝過java SDK,把這個也安裝一下,否則無法運行。配置環境變量可以參考Windows7 下環境變量設置

以上步驟完成後,在目錄\apache-activemq-5.5.1-bin\apache-activemq-5.5.1\bin下雙擊activemq.bat啟動服務。

Apache-ActiveMQ默認有一個監控網站頁面http://127.0.0.1:8161/admin/,可以查看當前Apache-ActiveMQ的各項參數。

如何配置Apache-ActiveMQ可以參考官方文檔,Apache-ActiveMQ提供了豐富的配置,包括分發策略、數據恢復策略、負載均衡、持久化策略。

大家有興趣可以Google一下,很多寫配置的文檔,本篇博客重點不在配置,就不贅述了。

二、消息傳遞

Apache-ActiveMQ把消息傳遞的過程分為2個部分,提供消息稱為Producer(可以理解為制作消息方),接收消息稱為Consumer(消息消費方)。

Producter向Apache-ActiveMQ Topic(Queue)中添加消息,Consumer從Apache-ActiveMQ Topic(Queue)取出消息,看到其他人大多寫TextMessage,此次示例是用XMLMessage作為消息對象,希望可以給需要用XML傳遞消息的讀者提供一些幫助,下面用代碼示例說明。

新建一個Producer用來發送消息:

Producer

代碼分析:

  • 新建一個工廠類示例,端口61616是默認端口,可以在Apache-ActiveMQ配置文件中配置
  • 創建連接,接下來創建會話Session,用Session創建一個ActiveMQTopic的Producer,還可以選擇ActiveMQQueue方式
  • Employee是自定義的員工類,包含一個Name(姓名)屬性和一個Num(編號)屬性
  • CreateXmlMessage新建消息,傳入參數Employee實例,此方法會自動此類型轉化為XML形式
  • Send方法發送消息,在此方法中包含四個參數
    • 第一個參數是要發送的消息
    • 第二個參數用來設置消息是否持久化,持久化的方式有多種(文件、數據庫等),可以在ActiveMQQueue配置文件中定義,默認為文件
    • 第三個參數設置消息優先級
    • 第四個參數設置消息過期時間,如果是MaxValue表示永不過期,根據實際情況選擇

 發送消息很簡單,接下來是接受消息的代碼:

Consumer

代碼分析:

  • 與發送消息相同,先與Apache-ActiveMQ建立連接
  • 與發送消息不同,接受消息需要通過Start方法顯式打開連接
  • 新建會話Session,CreateDurableConsumer創建消費者(訂閱者)
  • 設置consumer的接受事件,當接收消息後就會執行consumer_Listener方法
  • Employee類對應Producer中的Employee類,用Dictionary<string,string>保存員工信息,並實現一個隱式類型轉換

 

此時我們就可以運行一下我們的示例程序,要記得先運行Apache-ActiveMQ服務程序

以下是運行截圖:

 

總結:

Apache-ActiveMQ個人認為是一個很好的工具,用以定時處理一些消息提供支持,也解決了消息發送與消息處理速度不同的問題。

歡迎各位提出寶貴的意見和建議,如有問題可以加我的QQ:54474314討論

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved