Activemq 平臺搭建與C#示列

ActiveMQ

ActiveMQ 是Apache出品,最流行的,能力強勁的開源消息總線。ActiveMQ 是一個徹底支持JMS1.1和J2EE 1.4規範的 JMS Provider實現,儘管JMS規範出臺已是好久的事情了,可是JMS在當今的J2EE應用中間仍然扮演着特殊的地位。html

特性java

  1.  多種語言和協議編寫客戶端。語言: Java、C、C++、C#、Ruby、Perl、Python、PHP。應用協議:OpenWire、Stomp REST、WS Notification、XMPP、AMQP
  2. 徹底支持JMS1.1和J2EE 1.4規範 (持久化,XA消息,事務)
  3. 對Spring的支持,ActiveMQ能夠很容易內嵌到使用Spring的系統裏面去,並且也支持Spring2.0的特性
  4. 經過了常見J2EE服務器(如 Geronimo、JBoss 四、GlassFish、WebLogic)的測試,其中經過JCA 1.5 resource adaptors的配置,可讓ActiveMQ能夠自動的部署到任何兼容J2EE 1.4 商業服務器上
  5. 支持多種傳送協議:in-VM、TCP、SSL、NIO、UDP、JGroups、JXTA
  6. 支持經過JDBC和journal提供高速的消息持久化
  7. 從設計上保證了高性能的集羣,客戶端-服務器,點對點
  8. 支持Ajax
  9. 支持與Axis的整合
  10. 能夠很容易得調用內嵌JMS provider,進行測試

環境準備apache

我以windows7爲列子windows

  1. windows 7
  2. jdk1.6+ 並在windows下配置好環境變量等,具體能夠看 http://jingyan.baidu.com/article/ff41162596a77912e4823716.html
  3. 下載最新版activemq  http://activemq.apache.org/activemq-5121-release.html

安裝服務器

解壓下載好的安裝包,至本地任何磁盤session

啓動activemq服務tcp

啓動成功後的界面是ide

若是出現major.minor version51.0 之類的錯誤,都是java版本安裝錯誤的問題,安裝1.6+以上的版本就能解決性能

啓動成功後,http://localhost:8161/admin,默認用戶名和密碼admin/admin。若是你想修改用戶名和密碼的話,在conf/jetty-realm.properties中修改便可。測試

若是須要修改端口能夠在jetty文件中修改

管理員界面以下

ActiviteMQ接收和發送消息基本流程

摘自 http://www.cnblogs.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.cnblogs.com/woxpp/p/5001373.html 本文版權歸做者和博客園共有,歡迎轉載,但未經做者贊成必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接。

相關文章
相關標籤/搜索