Activemq 平台搭建与C#示列

ActiveMQ

ActiveMQ 是Apache出品,最风靡的,能力强大的开源音信总线。ActiveMQ
是三个截然支持JMS1.1和J2EE 1.4正规的 JMS
Provider已毕,即使JMS规范出台已经是很久的业务了,然则JMS在当今的J2EE应用当中依然扮演着特殊的身份。

特性

  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,进行测试

环境准备

我以windows7为列子

  1. windows 7
  2. jdk1.6+ 并在windows下布署好环境变量等,具体可以看
    http://jingyan.baidu.com/article/ff41162596a77912e4823716.html
  3. 下载最新版activemq
     http://activemq.apache.org/activemq-5121-release.html

安装

解压下载好的安装包,至当地任何磁盘

图片 1

启动activemq服务

图片 2

启航成功后的界面是

图片 3

设若出现major.minor
version51.0 之类的百无一用,都是java版本安装不当的题材,安装1.6+以上的版本就能消除

图片 4

起步成功后,http://localhost:8161/admin,暗中认同用户名和密码admin/admin。假诺你想修改用户名和密码的话,在conf/jetty-realm.properties中修改即可。

图片 5

若果急需修改端口可以在jetty文件中修改

图片 6

协会者界面如下

图片 7

ActiviteMQ接收和殡葬音讯基本流程

摘自 http://www.cnblogs.com/hoojo/p/active_mq_jms_apache_activeMQ.html

图片 8

出殡消息的主干步骤:

(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

图片 9

图片 10

创建C#品类,将那四个DLL添加到品种中。

写入地址如下

图片 11

写入账号,密码如下

图片 12

写入代码如下:

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);

                    }
                }
            }
        }
    }

写入后,可以查阅
图片 13

图片 14

 

图片 15

读取代码如下:

 

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();
        }
    }
}

图片 16 

 

作者:释迦苦僧 出处:http://www.cnblogs.com/woxpp/p/5001373.html
本文版权归小编和天涯论坛共有,欢迎转发,但未经我同意必须保留此段表明,且在作品页面明显地点给出原文连接。

相关文章