转-----安装配置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]

相关推荐