Active MQ C#实现

Active MQ C#实现

Kagula

2011/9/24

内容概要

主要以源码的形式介绍如何用C#实现同Active MQ 的通讯。本文假设你已经正确安装JDK1.6.x,了解Active MQ并有一定的编程基础。

正文

JMS 程序的最终目的是生产和消费的消息能被其他程序使用,JMS 的 Message 是一个既简单又不乏灵活性的基本格式,允许创建不同平台上符合非JMS 程序格式的消息。

Message 由消息头,属性和消息体三部份组成。

Active MQ支持过滤机制,即生产者可以设置消息的属性(Properties),该属性与消费者端的Selector对应,只有消费者设置的selector与消息的Properties匹配,消息才会发给该消费者。Topic和Queue都支持Selector,我这里为了文章简洁起见只使用Queue,更进一步的使用参考资料[4]及官网的其它技术资料。

准备

从参考资料[2]中下载apache-activemq-5.4.2-bin.zip

从参考资料[3]中下载Apache.NMS.ActiveMQ-1.5.1-bin.zip

我把它们解压缩到“d:\apache”,当然你可以选择其它存放路径

执行“D:\apache\apache-activemq-5.4.2\bin\activemq.bat”命令启动ActiveMQ服务器。

测试

Active MQ默认使用的TCP连接端口是61616, 通过查看该端口的信息可以测试Active MQ是否成功启动。

netstat -an|find "61616"

监控

Active MQ 默认启动时,启动了内置的jetty服务器,提供一个demo应用和用于监控ActiveMQ的admin应用。

可以通过下面网址访问,这里假设Active MQ被放在了本机。

http://127.0.0.1:8161/admin/

生产者示例

我这里用的是VisualStudio2010SP1专业版,新建C#控制台工程,添加对D:\apache\Apache.NMS.ActiveMQ-1.5.1-bin\lib\Apache.NMS\net-4.0\Apache.NMS.dll的引用。

把D:\apache\Apache.NMS.ActiveMQ-1.5.1-bin\build\net-4.0\release\Apache.NMS.ActiveMQ.dll复制到E:\workspace\tActiveMQ\tActiveMQ\bin\Debug路径中。

注意项目的[Application]->[TargetFramework]属性设置为[.NETFramework4],否则引用无效。

下面是消费者源码示例

using System; using System.Collections.Generic; using System.Linq; using System.Text; using Apache.NMS; using Apache.NMS.Util; using System.Collections; using System.IO; using System.Reflection; namespace tActiveMQ { class Program { static void Main(string[] args) { /* 请确保nmsprovider-activemq.config和可执行文件在同一个路径中 * 下面是config文件的内容;用于程序启动时,动态加载Apache.NMS.ActiveMQ.dll * <configuration> * <provider assembly="Apache.NMS.ActiveMQ.dll" * classFactory="Apache.NMS.ActiveMQ.ConnectionFactory"/> * </configuration> * */ IConnectionFactory connFac = new NMSConnectionFactory(new Uri("tcp://127.0.0.1:61616")); IConnection connection = connFac.CreateConnection(); ISession session = connection.CreateSession(); IDestination destination = SessionUtil.GetDestination(session, "queue://myqueue"); IMessageProducer producer = session.CreateProducer(destination); producer.DeliveryMode = MsgDeliveryMode.NonPersistent; ITextMessage request = session.CreateTextMessage("This is a kagula (producer)test!"); producer.Send(request); } } }


在以Debug方式运行前,你必须在E:\workspace\tActiveMQ\tActiveMQ\bin\Debug目录下正确建立nmsprovider-activemq.config文件(文件内容参考我粘贴的源码)。

注意上面:e:\workspace是我项目的存放位置,tActiveMQ是我C#工程的项目名称,你也可以使用其它路径或名称

更进一步的使用请参考资料[4]。

参考资料

[1]Active MQ在C#中的应用

http://www.cnblogs.com/guthing/archive/2010/06/17/1759333.html

[2]Active MQ下载网址

http://activemq.apache.org/download.html

[3] Apache.NMS下载网址

http://activemq.apache.org/nms/activemq-downloads.html

[4]C#调用Active MQ 的官方例子

http://activemq.apache.org/nms/nms-examples.html


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值