1.下載ActiveMQ 官方網站下載地址:http://activemq.apache.org/ 2.運行ActiveMQ 解壓縮apache-activemq-5.10.0-bin.zip,然後雙擊apache-activemq-5.10.0\bin\win32\activemq.bat運行Ac ...
1.下載ActiveMQ
官方網站下載地址:http://activemq.apache.org/
2.運行ActiveMQ
解壓縮apache-activemq-5.10.0-bin.zip,然後雙擊apache-activemq-5.10.0\bin\win32\activemq.bat運行ActiveMQ程式。
啟動ActiveMQ以後,可以使用瀏覽器登陸:http://localhost:8161/admin/驗證, 預設用戶名是:admin 密碼是:admin
(前提是配置好好JDK環境,能打開console代表MQ運行成功)
同時下載.net版Dll:Apache.NMS-1.6.0-bin.zip和Apache.NMS.ActiveMQ-1.6.4-bin.zip
都從這裡下載:http://archive.apache.org/dist/activemq/apache-nms/1.6.0/
- 引用ActiveMQ類庫:
(1)Apache.NMS.dll路徑:\Apache.NMS.ActiveMQ-1.7.2-bin\lib\Apache.NMS\net-3.5
(2)Apache.NMS.ActiveMQ.dll路徑:\Apache.NMS.ActiveMQ-1.7.2-bin\build\net-3.5\debug
3.MQ例子(生產者)
public Form1() { InitializeComponent(); InitProducer(); } private IConnectionFactory factory; public void InitProducer() { try { //初始化工廠 factory = new ConnectionFactory("tcp://localhost:61616"); } catch { lbMessage.Text = "初始化失敗"; } } private void button1_Click(object sender, EventArgs e) { //建立工廠連接 using (IConnection connection = factory.CreateConnection()) { //通過工廠連接創建Session會話 using (ISession session = connection.CreateSession()) { //通過會話創建生產者,方法里new出來MQ的Queue IMessageProducer prod = session.CreateProducer(new Apache.NMS.ActiveMQ.Commands.ActiveMQQueue("firstQueue")); //創建一個發送消息的對象 ITextMessage message = prod.CreateTextMessage(); XmlDocument Doc = new XmlDocument(); Doc.LoadXml("<?xml version='1.0' encoding='UTF-8'?><flightroute><flight><flightinfo><acid>CCA1501</acid><runway>13L</runway><gate>N115</gate><cockpitdirection>180</cockpitdirection><deparr>DEP</deparr></flightinfo></flight</flightroute>"); message.Text = Doc.InnerXml; //給這個消息對象賦實際的消息 //設置消息對象的屬性,是Queue的過濾條件也是P2P的唯一指定屬性 message.Properties.SetString("filter","demo"); prod.Send(message, MsgDeliveryMode.NonPersistent, MsgPriority.Normal, TimeSpan.MinValue); lbMessage.Text = "發送成功!"; Text.Text = ""; Text.Focus(); } } }可以點擊按鈕發送一些東西
接收端代碼(consumer)
public Form2() { InitializeComponent(); InitConsumer(); } public void InitConsumer() { //創建連接工廠 IConnectionFactory factory = new ConnectionFactory("tcp://localhost:61616"); //通過工廠創建連接 IConnection connection = factory.CreateConnection(); //連接伺服器端的標識 connection.ClientId = "firstQueueListener"; //啟動連接 connection.Start(); //通過連接創建對話 ISession session = connection.CreateSession(); //通過會話創建一個消費者 IMessageConsumer consumer = session.CreateConsumer(new Apache.NMS.ActiveMQ.Commands.ActiveMQQueue("firstQueue"),"filter = 'demo'"); //註冊監聽事件 consumer.Listener += new MessageListener(consumer_Listener); } void consumer_Listener(IMessage message) { ITextMessage msg = (ITextMessage)message; ReceiveMessage.Invoke(new DelegateRevMessage(RevMessage), msg); } public delegate void DelegateRevMessage(ITextMessage message); public void RevMessage(ITextMessage message) { ReceiveMessage.Text += string.Format(@"接收到:{0}{1}", message.Text, Environment.NewLine); }
發送的消息如果沒接收就被存在Queue里