前言

本文原创,转载请说明出处!

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 = ;
while (i<=)
{
Employee Em = new Employee() { name = "Employee" + i.ToString(), num = i };
ITextMessage msg = prod.CreateXmlMessage(Em);
Console.WriteLine("Sending: " + Em.name);
prod.Send(msg, Apache.NMS.MsgDeliveryMode.NonPersistent,Apache.NMS.MsgPriority.Normal, TimeSpan.MinValue);
System.Threading.Thread.Sleep();
i++;
}
}
} Console.ReadLine();
}
catch (System.Exception e)
{
Console.WriteLine("{0}", e.Message);
Console.ReadLine();
}
}
} public class Employee
{
public string name { set; get; }
public int num { set; get; }
}

Producer

代码分析:

  • 新建一个工厂类示例,端口61616是默认端口,可以在Apache-ActiveMQ配置文件中配置
  • 创建连接,接下来创建会话Session,用Session创建一个ActiveMQTopic的Producer,还可以选择ActiveMQQueue方式
  • Employee是自定义的员工类,包含一个Name(姓名)属性和一个Num(编号)属性
  • CreateXmlMessage新建消息,传入参数Employee实例,此方法会自动此类型转化为XML形式
  • Send方法发送消息,在此方法中包含四个参数
    • 第一个参数是要发送的消息
    • 第二个参数用来设置消息是否持久化,持久化的方式有多种(文件、数据库等),可以在ActiveMQQueue配置文件中定义,默认为文件
    • 第三个参数设置消息优先级
    • 第四个参数设置消息过期时间,如果是MaxValue表示永不过期,根据实际情况选择

发送消息很简单,接下来是接受消息的代码:

    class Program
{
static void Main(string[] args)
{
try
{
IConnectionFactory factory = new ConnectionFactory("tcp://localhost:61616/");
using (IConnection connection = factory.CreateConnection())
{
connection.ClientId = "Listener01";
connection.Start();
using (ISession session = connection.CreateSession())
{
IMessageConsumer consumer = session.CreateDurableConsumer(new Apache.NMS.ActiveMQ.Commands.ActiveMQTopic("Producer01"), "Consumer01", null, false);
consumer.Listener += new MessageListener(consumer_Listener);
Console.ReadLine();
}
connection.Stop();
connection.Close();
}
}
catch (System.Exception e)
{
Console.WriteLine(e.Message);
}
} static void consumer_Listener(IMessage message)
{
try
{
ITextMessage msg = (ITextMessage)message;
XmlDocument xml = new XmlDocument();
xml.LoadXml(msg.Text);
Employee employee = (Employee)xml;
Console.WriteLine("Receive: " + employee["name"]+"-"+employee["num"]);
}
catch (System.Exception e)
{
Console.WriteLine(e.Message);
}
}
} public class Employee
{
public Employee()
{
dic = new Dictionary<string, string>();
}
public Dictionary<string,string> dic { set; get; }
public string this[string key]
{
get
{
return dic[key];
}
set
{
if (dic.ContainsKey(key))
{
dic[key] = value;
}
else
{
dic.Add(key, value);
}
}
}
public static implicit operator Employee(XmlDocument xml)
{
XmlNodeList col = xml.LastChild.ChildNodes;
Employee employee = new Employee();
foreach (XmlNode node in col)
{
employee[node.Name] = node.InnerText;
}
return employee;
}
}

Consumer

代码分析:

  • 与发送消息相同,先与Apache-ActiveMQ建立连接
  • 与发送消息不同,接受消息需要通过Start方法显式打开连接
  • 新建会话Session,CreateDurableConsumer创建消费者(订阅者)
  • 设置consumer的接受事件,当接收消息后就会执行consumer_Listener方法
  • Employee类对应Producer中的Employee类,用Dictionary<string,string>保存员工信息,并实现一个隐式类型转换

此时我们就可以运行一下我们的示例程序,要记得先运行Apache-ActiveMQ服务程序

以下是运行截图:

aaarticlea/png;base64,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xednvs/tyfipgNuJ0t98zUxctbv57Nc2E3dYmUXHxDY3t1h//4c1zz635tnnkp55LumZ51Y/8/vsnFzvvNe7OkE+9lAdDLgd84znZdPc7cZdmxy/3lOBzVc1eO2k9J41XBgAoWP++/feH+XvjmC8U2gPBtyOeT63Ic9jW2TusJEuOia2uaXlmef+8Mxzf1jz7POeysnNU319r10Zg6upone+6gSf/zTTbwBUzaoOmr9J/Bq/3lPG62k8X3/XIch1A+AHk+/P97lN6O0I5h8btx9AO+apmlIdtM3cHVZmSt7//g8vPPv8C888/8dnnhsvbd5HaVZP21rAK2byahq3Y3DJTA7Je4J+DcPk+PWeCuZO8/dunEl3LyC74P8erjcz5xtvbcG0Y5tgZuLGw9BufGa6nnL8ek+ZWU+/JhKhomNiW1pan//jS7//44u//8OLv//Di88+/8Izz/0xJzffZN4H89jD4NYyeZWjgrsbVfMyP0291syMMyRraGbK/p4PIDSCz/uQ7AjmdyjbZNpGTG4f2majZu4OGynG8/7Fl59/4eXnX3j5uYngz80r8P75e+Vk7WMzS23+uME1nbIdv2g7tfl6Fag3X+052qemHKdBO2bm6+86hGTdAPgn4J+/N9hutI+9z/d5mqo1g3Z89uUvbafafo3HadCU9rjBGHy2ozdUM8cjWnRMbEtr6x9feuWFl17540tr//DS2udfePn5F17KKyjg9+t5C+11n2F3EQDfIuv362kDNSxdy9bajBEdE9vS6njx5VdffPnVF15+5Y8vvfLHl175w4sv5xcUkvceoXqpNyNfMgLQFVl5HxWmTYoddnpEx8S2tjpefvX1l159/cW1r7249rUX1r76wtpX8wuLyHsACErE5T1msOiY2FaHY+3rb6599Y21r77x0quvv/TKay+ufbWAvAeAIJH3kEd0TGyro+3VN95+5fW3Xnn9zbWvval8rV9QdI68B4CgkPeQR3RMrMPR9tqbb7/25tuvvvHWK6+/ufb1N9e+9mbhOfIeAIJD3kMe0TGxjra2N95+94233n39rXdee/Od1954+9U33io6d568B4CgaPN+jLxHmETHxLa1tb/97rq33n3/zXfef+Odd994593X33rn3PkL3j9/L/o9j2F8N2iQUwv7G0L97Zr3rgLTZ8q8D+0OotcUO2zAZtKOqeT9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Qt5DHuQ9AIhC3kMe5D0AiELeQx7kPQCIQt5DHuQ9AIhC3kMe5D0AiELeQx7kPQCIQt5DHuQ9AIhC3kMe5D0AiELeQx7kPQCIQt5DHuQ9AIhC3kMe5D0AiELeQx7kPQCIQt5DHuQ9AIhC3kMe5D0AiELeQx7kPQCIQt5DHuQ9AIhC3kMe5D0AiELeQx7kPQCIQt5DHuQ9AIhC3kMe5D0AiELeQx7kPQCIQt5DHuQ9AIhC3kMe5D0AiELeQx7kPQCIQt5DHuQ9AIhC3kMe5D0AiELeQx7kPQCIQt5DHuQ9AIhC3kMe5D0AiELeQx7kPQCIQt5DHuQ9AIhC3kMe5D0AiELeQx7kPQCIQt5DHuQ9AIhC3kMe5D0AiELeQx7kPQCIQt5DHuQ9AIhC3kMe5D0AiELeQx7kPQCIQt5DHuQ9AIhC3kMe5D0AiELeQx7kPQCIQt5DHuQ9AIhC3kMe5D0AiELeQx7kPQCIQt5DHuQ9AIhC3kMe5D0AiELeQx7kPQCIQt5DHuQ9AIhC3kMe5D0AiELeQx7kPQCIQt5DHuQ9AIhC3kMe5D0AiELeQx7kPQCIQt5DHuQ9AIhC3kMe5D0AiELeQx7kPQCIQt5DHuQ9AIhC3kMe5D0AiELeQx7kPQCIQt5DHuQ9AIhC3kMe5D0AiELeQx7kPQCIQt5DHuQ9AIhC3kMe5D0AiELeQx7kPQCIQt5DHuQ9AIhC3kMe5D0AiELeQx7kPQCIQt5DHuQ9AIhC3kMe5D0AiELeQx7kPQCIQt5DHuQ9AIhC3kMe5D0AiELeQx7kPQCIQt5DHuQ9AIhC3kMe5D0AiELeQx7kPQCIQt5DHuQ9AIhC3kMe5D0AiELeQx7kPQCIQt5DHuQ9AIhC3kMe5D0AiELeQx7kPQCIQt5DHuQ9AIhC3kMe5D0AiELeQx7kPQCIQt5DHuQ9AIhC3kMe5D0AiELeQx7kPQCIQt5DHuQ9AIhC3kMe5D0AiELeQx7kPQCIQt5DHuQ9AIhC3kMe5D0AiELeQx7kPQCIQt5DHuQ9AIhC3kMe5D0AiELeQx7kPQCIQt5DHuQ9AIhC3kMe5D0AiELeQx7kPQCIQt5DHuQ9AIhC3kMe5D0AiELeQx7kPQCIQt5DHuQ9AIhC3kMe5D0AiELeQx7kPQCIQt5DHuQ9AIhC3kMe5D0AiELeQx7kPQCIQt5DHuQ9AIhC3kMe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" alt="" width="588" height="384" />

总结:

Apache-ActiveMQ个人认为是一个很好的工具,用以定时处理一些消息提供支持,也解决了消息发送与消息处理速度不同的问题。

欢迎各位提出宝贵的意见和建议,如有问题可以加我的QQ:54474314讨论

Apache-ActiveMQ transport XmlMessage的更多相关文章

  1. org.apache.activemq.transport.InactivityIOException: Cannot send, channel has already failed

    项目是使用activeMQ 发布订阅的模式,在本地测试正常,但是 放到服务器上出现这个错误: org.apache.activemq.transport.InactivityIOException: ...

  2. Apache ActiveMQの版本更迭和Apache ActiveMQの故障转移

    本文描述apache activemq 版本更迭的原因以及Apache ActiveMQのThe Failover Transport new features in 5.2.0  1.对信息的传输/ ...

  3. apache activemq 学习笔记

    0.activemq的概念 activemq实现了jms(java Message server),用于接收,发送,处理消息的开源消息总线. 1.activemq和jms的区别 jms说白了就是jav ...

  4. Apache ActiveMQ实战(2)-集群

    ActiveMQ的集群 内嵌代理所引发的问题: 消息过载 管理混乱 如何解决这些问题--集群的两种方式: Master slave Broker clusters ActiveMQ的集群有两种方式: ...

  5. [我的CVE][CVE-2017-15709]Apache ActiveMQ Information Leak

    问题原因: Apache ActiveMQ默认消息队列61616端口对外,61616端口使用了OpenWire协议,这个端口会暴露服务器相关信息,这些相关信息实际上是debug信息. 会返回应用名称, ...

  6. Apache ActiveMQ教程

    一.特性及优势 1.实现JMS1.1规范,支持J2EE1.4以上 2.可运行于任何jvm和大部分web容器(ActiveMQ works great in any JVM) 3.支持多种语言客户端(j ...

  7. 消息队列MQ - Apache ActiveMQ

    Apache ActiveMQ是Apache软件基金会所研发的开放源码消息中间件:由于ActiveMQ是一个纯Jave程式,因此只需要操作系统支持Java虚拟机,ActiveMQ便可执行. 1.que ...

  8. apache activemq的重连

    1.activemq的重连机制 maxReconnectAttempts -1 | 0 From version 5.6 onwards: -1 is default and means retry ...

  9. org.apache.cxf.transport.servlet.CXFServlet cannot be cast to javax.servlet.Servlet

    java.lang.ClassCastException: org.apache.cxf.transport.servlet.CXFServlet cannot be cast to javax.se ...

  10. How to Setup Replicated LevelDB Persistence in Apache ActiveMQ 5.9--转载

    原文地址:https://simplesassim.wordpress.com/2013/11/03/how-to-setup-replicated-leveldb-persistence-in-ap ...

随机推荐

  1. Struts2架构分析和执行机制

    实例分析 1.在浏览器中输入url地址后,会通过http协议发送给tomcat,tomacat收到请求后查看訪问的是哪个 webapplication(例如以下图的Struts2_0100_Intro ...

  2. unity, 3dmax制作的morph(blendshape)导入unity中使用注意事项

    在实现<乱纪元大冒险>(见:http://www.cnblogs.com/wantnon/p/4857072.html)中由于质子展开失败形成的变形几何体和眼睛.几何体经过一系列形变最后变 ...

  3. SignalR IOS Android

    http://www.dotblogs.com.tw/toysboy21/archive/2014/03/24/144505.aspx https://www.youtube.com/watch?v= ...

  4. Atitit.sql where条件表达式的原理  attilax概括

    Atitit.sql where条件表达式的原理  attilax概括 1. 数据查询接口sql api标准化1 2. Sql接口的问题2 2.1. 虽然sql是结构化的dsl,但是任然是编程语言类型 ...

  5. 基于AXI VDMA的图像采集系统

    基于AXI VDMA的图像采集系统 转载 2017年04月18日 17:26:43 标签: framebuffer / AXIS / AXI VDMA 2494 本课程将对Xilinx提供的一款IP核 ...

  6. 设计模式_EventObject和EventListener

    一.事件机制基本概念 java中的事件机制的参与者有3种角色: 1.event object:事件状态对象,用于listener的相应的方法之中,作为参数,一般存在与listerner的方法之中 2. ...

  7. Oracle 版本号说明

    Oracle 的版本非常多,先看11g的一个版本说明: 注意: 在oracle 9.2 版本号之后, oracle 的maintenance release number 是在第二数字位更改. 而在之 ...

  8. 利用C#的指针编写都一个简单链表

    using System; namespace UnsafeTest { unsafe struct link { public int x; public link* next; } class P ...

  9. 用Doxygen+Graphviz生成函数调用流程图(转)

    源文链接: http://wildpointer.net/2012/04/14/doxygen_graphviz/ 上面这张图是用Doxygen+Graphviz从netcat的源代码生成的函数调用关 ...

  10. poj 2846 Repository

    题目大意:给你n个字符串,然后给你m个子串,看这个子串在上面的多少个串中,出现过: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2846 本题可以在字 ...