ActiveMQ 是Apache出品,最流行的,能力強勁的開源消息總線。ActiveMQ 是一個完全支持JMS1.1和J2EE 1.4規范的 JMS PRovider實現,盡管JMS規范出臺已經是很久的事情了,但是JMS在當今的J2EE應用中間仍然扮演著特殊的地位。
特性
環境準備
我以windows7為列子
安裝
解壓下載好的安裝包,至本地任何磁盤
啟動activemq服務
啟動成功后的界面是
如果出現major.minor version51.0 之類的錯誤,都是java版本安裝錯誤的問題,安裝1.6+以上的版本就能解決
啟動成功后,http://localhost:8161/admin,默認用戶名和密碼admin/admin。如果你想修改用戶名和密碼的話,在conf/jetty-realm.properties中修改即可。
如果需要修改端口可以在jetty文件中修改
管理員界面如下
ActiviteMQ接收和發送消息基本流程
摘自 http://www.49028c.com/hoojo/p/active_mq_jms_apache_activeMQ.html
發送消息的基本步驟:
(1)、創建連接使用的工廠類JMS ConnectionFactory
(2)、使用管理對象JMS ConnectionFactory建立連接Connection,并啟動
(3)、使用連接Connection 建立會話session
(4)、使用會話Session和管理對象Destination創建消息生產者MessageSender
(5)、使用消息生產者MessageSender發送消息
消息接收者從JMS接受消息的步驟
(1)、創建連接使用的工廠類JMS ConnectionFactory
(2)、使用管理對象JMS ConnectionFactory建立連接Connection,并啟動
(3)、使用連接Connection 建立會話Session
(4)、使用會話Session和管理對象Destination創建消息接收者MessageReceiver
(5)、使用消息接收者MessageReceiver接受消息,需要用setMessageListener將MessageListener接口綁定到MessageReceiver消息接收者必須實現了MessageListener接口,需要定義onMessage事件方法。
C#消息隊列寫入
ActiveMQ官方網站下載最新版的Apache.NMS,網址:http://activemq.apache.org/nms/download.html,需要下載Apache.NMS和Apache.NMS.ActiveMQ兩個bin包
http://www.apache.org/dyn/closer.lua/activemq/apache-nms/1.7.0/Apache.NMS.ActiveMQ-1.7.1-bin.zip
創建C#項目,將這兩個DLL添加到項目中。
寫入地址如下
寫入賬號,密碼如下
寫入代碼如下:
namespace Consoleapplication21{ class Program { static void Main(string[] args) { String QueuesNameESF = "queue://test.log"; Uri _uri = new Uri(String.Concat("activemq:tcp://10.58.8.239:61616")); IConnectionFactory factory = new ConnectionFactory(_uri); using (IConnection conn = factory.CreateConnection("admin", "manager")) { using (ISession session = conn.CreateSession()) { IDestination destination = SessionUtil.GetDestination(session, QueuesNameESF); using (IMessageProducer producer = session.CreateProducer(destination)) { conn.Start(); //可以寫入字符串,也可以是一個xml字符串等 ITextMessage request = session.CreateTextMessage("messsage"); producer.Send(request); } } } } }
寫入后,可以查看
讀取代碼如下:
using System;using Apache.NMS;using Apache.NMS.ActiveMQ;using Apache.NMS.Util;namespace ConsoleApplication21{ class Program { static void Main(string[] args) { String QueuesNameESF = "queue://test.log"; Uri _uri = new Uri(String.Concat("activemq:tcp://10.58.8.239:61616?wireFormat.maxInactivityDuration=0")); IConnectionFactory factory = new ConnectionFactory(_uri); using (IConnection conn = factory.CreateConnection("admin", "manager")) { using (ISession session = conn.CreateSession()) { conn.Start(); IDestination destination = SessionUtil.GetDestination(session, QueuesNameESF); using (IMessageConsumer consumer = session.CreateConsumer(destination)) { ITextMessage message = consumer.Receive() as ITextMessage; Console.Write(message.Text); } } } Console.ReadLine(); } }}
作者:釋迦苦僧 出處:http://www.49028c.com/woxpp/p/5001373.html 本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接。
新聞熱點
疑難解答