转-----安装配置ActiveMQ5.0
简介
ActiveMQ是开源的JMS实现,Geronimo应用服务器就是使用的ActiveMQ提供JMS服务。ActiveMQ5.0相比以前版本提供了一些非常有用的新功能:
1.AMQMessageStore(FasterPersistence!)
2.Cursors(Tohandleverylargenumberofstoredmessages)
3.BlobMessages
4.CommandAgent
5.EnterpriseIntegrationPatternsviaCamelIntegration
6.LoggingawarningifyouforgettostartaConnection
7.MessageTransformation
8.MirroredQueues
9.FlowControl
鉴于目前关于ActiveMQ5.0的文章比较少,故准备写一系列ActiveMQ的使用方面的文章。本篇先从安装开始。
安装
1.在http://activemq.apache.org/download.html下载5.0.0发行包,解压到需要安装ActiveMQ的文件夹,记为/path/to/activemq。
2.unix环境activemq文件夹需要执行权限,执行如下命令chmod-R755/path/to/activemq
启动
1.window环境运行/path/to/activemq/bin/activemq.bat
2.unix环境运行/path/to/activemq/bin/activemq
测试
ActiveMQ默认使用的TCP连接端口是61616,通过查看该端口的信息可以测试ActiveMQ是否成功启动
1.window环境运行netstat-an|find"61616"
2.unix环境运行netstat-an|grep61616
监控
ActiveMQ5.0版本默认启动时,启动了内置的jetty服务器,提供一个demo应用和用于监控ActiveMQ的admin应用。
admin:http://127.0.0.1:8161/admin/
demo:http://127.0.0.1:8161/demo/
配置
ActiveMQ5.0的配置文件在/path/to/activemq/conf目录下面。主要配置文件为activemq.xml,具体的配置将在后续文章中详细说明。
-------------------------------------------****************************************************************
持久化时不能对自定义类型的对象进行保存,看是不是你的messageConverter有问题?你的消息类型是POJO吗?
MessageConverter如下
Java代码
1.publicclassDefaultMessageConverterimplementsMessageConverter{
2./**
3.*Loggerforthisclass
4.*/
5.privatestaticfinalLoglog=LogFactory.getLog(DefaultMessageConverter.class);
6.
7.publicMessagetoMessage(Objectobj,Sessionsession)throwsJMSException{
8.if(log.isDebugEnabled()){
9.log.debug("toMessage(Object,Session)-start");
10.}
11.
12.//checkType
13.ActiveMQObjectMessageobjMsg=(ActiveMQObjectMessage)session.createObjectMessage();
14.HashMap<String,byte[]>map=newHashMap<String,byte[]>();
15.try{
16.//POJOmustimplementsSeralizable
17.ByteArrayOutputStreambos=newByteArrayOutputStream();
18.ObjectOutputStreamoos=newObjectOutputStream(bos);
19.oos.writeObject(obj);
20.map.put("POJO",bos.toByteArray());
21.objMsg.setObjectProperty("Map",map);
22.
23.}catch(IOExceptione){
24.log.error("toMessage(Object,Session)",e);
25.}
26.returnobjMsg;
27.}
28.
29.publicObjectfromMessage(Messagemsg)throwsJMSException{
30.if(log.isDebugEnabled()){
31.log.debug("fromMessage(Message)-start");
32.}
33.
34.if(msginstanceofObjectMessage){
35.HashMap<String,byte[]>map=(HashMap<String,byte[]>)((ObjectMessage)msg).getObjectProperty("Map");
36.try{
37.//POJOmustimplementsSeralizable
38.ByteArrayInputStreambis=newByteArrayInputStream(map.get("POJO"));
39.ObjectInputStreamois=newObjectInputStream(bis);
40.ObjectreturnObject=ois.readObject();
41.returnreturnObject;
42.}catch(IOExceptione){
43.log.error("fromMessage(Message)",e);
44.
45.}catch(ClassNotFoundExceptione){
46.log.error("fromMessage(Message)",e);
47.}
48.
49.returnnull;
50.}else{
51.thrownewJMSException("Msg:["+msg+"]isnotMap");
52.}
53.}
54.}[size=medium][/size]