xingyu655 发表于 2015-7-30 15:56:57

Apache-ActiveMQ transport XmlMessage

前言
  本文原创,转载请说明出处!
  Apache-ActiveMQ:是Apache提供的一款开源的消息传送服务,不论是安装还是使用都非常简单实用,可以作为消息缓存管理器来使用(个人观点),看看ActiveMQ提供了什么。
  ActiveMQ提供两种消息传递方式:Queues(队列)和Topics(主题)。
  这两者的区别主要体现在获取消息端,Queues方式下消息只能被获取一次,也就是说多个消息获取端不会获得重复的信息。
  Topics方式相当于订阅,所有消息获取端都可以获得相同的消息。
  相比之下,Queues更适合做负载均衡,让多个消息获取端处理一组消息;Topic适合作为消息分发或者消息多用途时使用。
  ActiveMQ传递消息的种类包括:BytesMessage、ObjectMessage、TextMessage、XmlMessage,还有些不常用的MapMessagee、StreamMessage等。
  接下来看具体的用法。

一、配置Apache-ActiveMQ
  Apache-ActiveMQ的安装和配置还是比较简单的,先到官网下载Apache-ActiveMQ,本文使用的版本是5.5.1,据说比较稳定。
  另外到这里下载两个bin包,里面有对应的DLL,稍后会在项目中用到。
  下载好以后,如果没有安装过java SDK,把这个也安装一下,否则无法运行。配置环境变量可以参考Windows7 下环境变量设置
  以上步骤完成后,在目录\apache-activemq-5.5.1-bin\apache-activemq-5.5.1\bin下双击activemq.bat启动服务。
  Apache-ActiveMQ默认有一个监控网站页面http://127.0.0.1:8161/admin/,可以查看当前Apache-ActiveMQ的各项参数。
  如何配置Apache-ActiveMQ可以参考官方文档,Apache-ActiveMQ提供了丰富的配置,包括分发策略、数据恢复策略、负载均衡、持久化策略。
  大家有兴趣可以Google一下,很多写配置的文档,本篇博客重点不在配置,就不赘述了。

二、消息传递
  Apache-ActiveMQ把消息传递的过程分为2个部分,提供消息称为Producer(可以理解为制作消息方),接收消息称为Consumer(消息消费方)。
  Producter向Apache-ActiveMQ Topic(Queue)中添加消息,Consumer从Apache-ActiveMQ Topic(Queue)取出消息,看到其他人大多写TextMessage,此次示例是用XMLMessage作为消息对象,希望可以给需要用XML传递消息的读者提供一些帮助,下面用代码示例说明。
  新建一个Producer用来发送消息:





class Program
{
static void Main(string[] args)
{
try
{
IConnectionFactory factory = new ConnectionFactory("tcp://localhost:61616/");
using (IConnection connection = factory.CreateConnection())
{
using (ISession session = connection.CreateSession())
{
IMessageProducer prod = session.CreateProducer(new Apache.NMS.ActiveMQ.Commands.ActiveMQTopic("Producer01"));
int i = 0;
while (i
页: [1]
查看完整版本: Apache-ActiveMQ transport XmlMessage