ActiveMQ 是Apache出品,最流行的,能力強(qiáng)勁的開(kāi)源消息總線(xiàn)。ActiveMQ 是一個(gè)完全支持JMS1.1和J2EE 1.4規(guī)范的 JMS PRovider實(shí)現(xiàn),盡管JMS規(guī)范出臺(tái)已經(jīng)是很久的事情了,但是JMS在當(dāng)今的J2EE應(yīng)用中間仍然扮演著特殊的地位。
特性
環(huán)境準(zhǔn)備
我以windows7為列子
安裝
解壓下載好的安裝包,至本地任何磁盤(pán)
啟動(dòng)activemq服務(wù)
啟動(dòng)成功后的界面是
如果出現(xiàn)major.minor version51.0 之類(lèi)的錯(cuò)誤,都是java版本安裝錯(cuò)誤的問(wèn)題,安裝1.6+以上的版本就能解決
啟動(dòng)成功后,http://localhost:8161/admin,默認(rèn)用戶(hù)名和密碼admin/admin。如果你想修改用戶(hù)名和密碼的話(huà),在conf/jetty-realm.properties中修改即可。
如果需要修改端口可以在jetty文件中修改
管理員界面如下
ActiviteMQ接收和發(fā)送消息基本流程
摘自 http://www.survivalescaperooms.com/hoojo/p/active_mq_jms_apache_activeMQ.html
發(fā)送消息的基本步驟:
(1)、創(chuàng)建連接使用的工廠類(lèi)JMS ConnectionFactory
(2)、使用管理對(duì)象JMS ConnectionFactory建立連接Connection,并啟動(dòng)
(3)、使用連接Connection 建立會(huì)話(huà)session
(4)、使用會(huì)話(huà)Session和管理對(duì)象Destination創(chuàng)建消息生產(chǎn)者M(jìn)essageSender
(5)、使用消息生產(chǎn)者M(jìn)essageSender發(fā)送消息
消息接收者從JMS接受消息的步驟
(1)、創(chuàng)建連接使用的工廠類(lèi)JMS ConnectionFactory
(2)、使用管理對(duì)象JMS ConnectionFactory建立連接Connection,并啟動(dòng)
(3)、使用連接Connection 建立會(huì)話(huà)Session
(4)、使用會(huì)話(huà)Session和管理對(duì)象Destination創(chuàng)建消息接收者M(jìn)essageReceiver
(5)、使用消息接收者M(jìn)essageReceiver接受消息,需要用setMessageListener將MessageListener接口綁定到MessageReceiver消息接收者必須實(shí)現(xiàn)了MessageListener接口,需要定義onMessage事件方法。
C#消息隊(duì)列寫(xiě)入
ActiveMQ官方網(wǎng)站下載最新版的Apache.NMS,網(wǎng)址:http://activemq.apache.org/nms/download.html,需要下載Apache.NMS和Apache.NMS.ActiveMQ兩個(gè)bin包
http://www.apache.org/dyn/closer.lua/activemq/apache-nms/1.7.0/Apache.NMS.ActiveMQ-1.7.1-bin.zip
創(chuàng)建C#項(xiàng)目,將這兩個(gè)DLL添加到項(xiàng)目中。
寫(xiě)入地址如下
寫(xiě)入賬號(hào),密碼如下
寫(xiě)入代碼如下:
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(); //可以寫(xiě)入字符串,也可以是一個(gè)xml字符串等 ITextMessage request = session.CreateTextMessage("messsage"); producer.Send(request); } } } } }
寫(xiě)入后,可以查看
讀取代碼如下:
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.survivalescaperooms.com/woxpp/p/5001373.html 本文版權(quán)歸作者和博客園共有,歡迎轉(zhuǎn)載,但未經(jīng)作者同意必須保留此段聲明,且在文章頁(yè)面明顯位置給出原文連接。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注