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
    4、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

安装

解压下充斥好之装包,至本土任何磁盘

Ajax 1

启动activemq服务

Ajax 2

开行成功后的界面是

Ajax 3

比方起major.minor
version51.0 之类的缪,都是java版本安装不当的题目,安装1.6+以上的版本就能迎刃而解

Ajax 4

启航成功后,http://localhost:8161/admin,默认用户称与密码admin/admin。如果您想修改用户名和密码的话,在conf/jetty-realm.properties中修改即可。

Ajax 5

只要要改端口可以当jetty文件被修改

Ajax 6

组织者界面如下

Ajax 7

ActiviteMQ接收和发送信息基本流程

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

Ajax 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

Ajax 9

Ajax 10

创建C#路,将这简单单DLL添加到项目受到。

写副地址如下

Ajax 11

形容副账号,密码如下

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

                    }
                }
            }
        }
    }

形容副后,可以查
Ajax 13

Ajax 14

 

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

Ajax 16 

 

笔者:释迦苦僧 出处:http://www.cnblogs.com/woxpp/p/5001373.html
本文版权归作者和博客园共有,欢迎转载,但未经作者同意要保留这个段子声明,且当篇章页面明显位置于出原文连接。

相关文章