之所以将题目 成为ActiveMq小结 是因为 最近我做的一个项目用到了JMS 然后我采用了开源的MQ 这个,但因为时间比较紧,所以
我暂时没有花太多的时间去研究它。不过也看了一些网友的文章,给了我许多的提醒。在此表示感谢,为了,让以后想用这个开源MQ的人
少走一些弯路,我准备写一个小结。如果有什么不明白的地方,欢迎给大家给我留言,我们可以共同探讨。
小结主要包括个人看的一些网上文章,我觉得写的还好的一些,有一些比较零散的我就不介绍了
。
JMS消息详解:
Message有三个主要组成部件:标头、主体和属性
一、消息标头:
消息标头是消息的信封,包含为使消息到达目的地所需要的所有信息,可以直接控制其中一些字段的值,其它值则由JMS提供程序填写。
JMSDestination:
由Send方法设置。指定消息的目的地,由JMS提供程序填写
JMSDeliveryMode:
由Send方法设置。提交消息的模式-持续或非持续。发送消息后JMS提供程序填写该字段。
JMSMessageID:
Send 方法设置。包含消息的唯一标识符。发送过程中由JMS提供程序填写
JMSTimeStamp:
Send 方法设置。记录消息被传递给send方法的时间。发送过程中由JMS提供程序填写
JMSCorrelationID:
由客户端设置。包含用于将消息连接在一起的ID。客户端一般将其置为所引用消息的ID
JMSReplyTo:
由客户端设置。响应消息的目的地,如果客户端期望得到响应消息,则填写该字段
JMSRedelivered:
由JMS提供程序设置。指出该消息先前被发送过
JMSType:
由客户端设置。包含由客户端提供的消息类型标识符。是否需要该字段,不同的提供程序有不同要求
JMSExpiration:
Send 方法设置。一个根据客户端提供的年龄计算出来的值,如果GMT比该过期值晚,则销毁消息
JMSPriority:
Send 方法设置。包含客户端在发送消息时所设置有限级值
二、消息属性
除了上面的属性,还可以自定义属性,以便进行消息的选择
一般通过setXXXProperty方法来定义消息属性,XXX取值为:Boolean、Byte、Double、Float、Int、Long、Object、Short及String。
每一属性均由字符串名字和相关的值组成
TextMessage msg =
tsession.createTextMessage();
msg.setStringProperty(“CUSTOMER_NAME”,”MyCustomer”);
String customer =
msg.getStringProperty(“CUSTOMER_NAME”);
三、消息主体
包含了消息的核心数据。
JMS 定义了5中消息类型:
TextMessage
、MapMessage、BytesMessage、StreamMessage、ObjectMessage
选择最合适
的消息类型可以使JMS最有效
的处理消息。
1.
文本消息
TextMessage
将数据作为简单字符串存放在主体中(XML就可以作为字符串发)
TextMessage
msg = session.createTextMessage();
msg.setText(text);
有些厂商支持一种XML专用的消息格式,带来了便利,但是不是标准的JMS类型,影响移植性
只自己定义了两个方法setText(String s)、getText()
2.
映射表消息
MapMessage
使用一张映射表来存放其主体内容
参照Jms
API
MapMessage
msg = session.createMapMessage();
msg.setString(“CUSTOMER_NAME”,”John”);
msg.setInt(“CUSTOMER_AGE”,12);
String s =
msg.getString(“CUSTOMER_NAME”);
int age =
msg.getInt(“CUSTOMER_AGE”);
3.
字节消息
BytesMessage
将字节流存放在消息主体中。适合于下列情况:必须压缩发送的大量数据、需要与现有消息格式保持一致等
参照Jms
API
byte[]
data;
BytesMessage msg = session.createBytesMessage();
msg.wirte(data);
byte[]
msgData = new byte[256];
int
bytesRead = msg.readBytes(msgData);
4.
流消息
StreamMessage
用于处理原语类型。这里也支持属性字段和MapMessage所支持的数据类型。
使用这种消息格式时,收发双发事先协商好字段的顺序,以保证写读顺序相同
参照Jms
API
StringMessage msg =
session.createStreamMessage();
msg.writeString(“John”);
msg.writeInt(12);
String s
= msg.readString();
int age =
msg.readInt();
5.
对象消息
ObjectMessage
用于往消息中写入可序列化的对象。
消息中可以存放一个对象,如果要存放多个对象,需要建立一个对象集合,然后把这个集合写入消息。
客户端接收到一个ObjectMessage时,是read-only模式。如果一个客户端试图写message,将会抛出MessageNotWriteableException。如果调用了clearBody方法,message既可以读又可以写
自己只单独定义了两个方法:getObject()和setObject(Serializable
s)
ObjectMessage包含的只是object的一个快照,set之后object的修改对ObjectMessage的body无效
Message只读时被set抛出MessageNotWriteableException;
set和get时,如果对象序列化失败抛出MessageFormatException
这里我转载一篇文章,网址如下:
http://shenzhenchufa.blog.51cto.com/730213/171710
这里有一写具体的实例,大家可以借鉴一下,由于这次我没有用到Spring集成那部分,所以我再次就不多介绍了,大家自己可以查一下相应的资料。
MS、XML 和异构企业
下面这个网址是我IBM developerworks网站的一篇文章。希望可以给大家拓展思路
http://www.ibm.com/developerworks/cn/xml/heterogeneous/index.html
因为我这次也是想传递一个XML的文件,然后来解析,提取其中自己需要的那部分。
我采用的XML解析的技术是Dom4J,技术有很多种,大家可以选择自己熟悉的一种。其实这里面很重要的一个应用就是
字符串与XML的转换
// XML转字符串
Document document = ...;
String text = document.asXML();
// 字符串转XML
String text = <person> <name>James</name> </person>;
Document document = DocumentHelper.parseText(text);
在这里如果大家对用Dom4j操作XML不了解,可以参考:
http://xhy0422.javaeye.com/blog/50235
至于ActiveMq具体是什么东东,再次我就不介绍了,网上很多介绍这个的。大家也可以到它的官方网站上去看。
我在这里想说的一点就是ActiveMq的 API ,由于我没有找到可以下载的API 所以只能在线看,地址如下:
http://activemq.apache.org/maven/activemq-core/apidocs/
由于时间的原因我就先写到这里.
写这个的时候我主要参考了JavaEE 的APi 我用的1.4版本的,1.5的也可以。这个随便选择。
还有dom4j API
J2EE 1.5api.CHM
J2EE 1.4api.CHM
dom4j 1.6.1 API.chm
至于j2se 的API的我提供了。由于文件稍大一些,上传比较费时间,所以我就不上传了。如果需要大家可以留言。
最后啰嗦一句,我没有把我测试的源码贴在这里是因为,我还没有整理好。代码比较乱,所以不敢再次献丑,^_^。
因为我测试了好几段程序,所以 注释了好多地方,看起来比较乱。以后有时间我就贴上来。
大家有什么小问题,我们可以探讨。我也欢迎我们大家共同进步。
转载自:http://blog.csdn.net/ecjtuxuan/archive/2009/07/26/4382126.aspx
分享到:
相关推荐
尚硅谷周阳activemq脑图,
activeMq的一个小例子activeMq的一个小例子activeMq的一个小例子activeMq的一个小例子activeMq的一个小例子activeMq的一个小例子activeMq的一个小例子activeMq的一个小例子activeMq的一个小例子activeMq的一个小例子...
activemq activeMq笔记.docx
最新activemq-cpp开发手册!
apache-activemq Linux版本
activemq书籍及工具 activemq书籍及工具 activemq书籍及工具 activemq书籍及工具 activemq书籍及工具
activeMQ的测试工具,用于发送和接收activeMQ消息,jar包形式的,安装完jdk之后用java -jar xxx.jar命令运行
activemq, Apache ActiveMQ镜像 欢迎来到 Apache ActiveMQis是一个高性能的Apache 2.0许可以消息代理和 JMS 1.1实现。正在启动要帮助你入门,请尝试以下链接:入门http://activemq.apache.org/version-
ActiveMQ高并发处理方案ActiveMQ高并发处理方案 超级字数补丁超级字数补丁
activeMQ学习activeMQ学习activeMQ学习activeMQ学习
包括1、ActiveMQ java实例 2、ActiveMQ Spring结合实例 3、代码亲测,无问题。 4、资源分5分绝对值 注意:请先安装ActiveMQ 服务。
activemq 配置说明与activemq入门讲解
springboot +netty+activeMq在线客服系统springboot +netty+activeMq在线客服系统springboot +netty+activeMq在线客服系统springboot +netty+activeMq在线客服系统springboot +netty+activeMq在线客服系统springboot...
activemq消息测试工具
activemq实战
百度spring整合activemq 发现几乎都只是在xml文件配置固定的消息队列而且太麻烦。并没有根据需求进行动态生成主题和队列。本文档参考了纯粹的activemq java代码和百度上的demo,很简洁的实现了动态消息队列的生成和...
本教程旨在帮助activeMQ初学者入门,通过本示例,能完全理解activeMQ的基本概念,为分布式应用打下基础。 本示例中,使用maven管理,完美解决各种依赖问题,不需要自行配置,导入项目等待eclipse自行下载jar包后即可...
Linux版本activemq安装包
ActiveMQ例子