安装配置ActiveMQ5.0

简介

  ActiveMQ 是开源的JMS实现,Geronimo应用服务器就是使用的ActiveMQ提供JMS服务。ActiveMQ5.0相比以前版本提供了一些非常有用的新 功能:

  1. AMQ Message Store (Faster Persistence!)
  2. Cursors (To handle very large number of stored messages)
  3. Blob Messages
  4. Command Agent
  5. Enterprise Integration Patterns via Camel Integration
  6. Logging a warning if you forget to start a Connection
  7. Message Transformation
  8. Mirrored Queues
  9. Flow Control 

鉴于目前关于ActiveMQ5.0的文章比较少,故准备写一系列ActiveMQ的使用方面的文章。本篇先从安装开始。 

安装

  1. http://activemq.apache.org/download.html 下 载5.0.0发行包,解压到需要安装ActiveMQ的文件夹,记为/path/to/activemq。
  2. unix环境activemq文件夹需要执行权限,执行如下命令  chmod -R 755 /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|grep 61616

监控

ActiveMQ5.0版本默认启动时,启动了内置的jetty服务器,提供一个demo应用和用于监控ActiveMQ的admin应用。

admin:http://127.0.0.1:8161/admin/

demo:http://127.0.0.1:8161/demo/

 

点击demo应用中的“ Market data publisher ”,就会发一 些测试的消息。转到admin页面的topics menu下面(queue和topic的区别见 http://andyao.javaeye.com/blog/153173 ),可以看到消息在增长。

配置

ActiveMQ5.0的配置文件在/path/to/activemq/conf目录下面。主要配置文件为activemq.xml,具体的配置 将在后续文章中详细说明。

 

-------------------------------------------****************************************************************

 

 

 

持久化时不能对自定义类型的对象进行保存,看是不是你的messageConverter有问题?你的消息类型是POJO吗?

 

 

MessageConverter如下

Java代码 复制代码
  1. public   class  DefaultMessageConverter  implements  MessageConverter {   
  2.      /**  
  3.      * Logger for this class  
  4.      */   
  5.      private   static   final  Log log = LogFactory.getLog(DefaultMessageConverter. class );   
  6.   
  7.      public  Message toMessage(Object obj, Session session)  throws  JMSException {   
  8.          if  (log.isDebugEnabled()) {   
  9.             log.debug( "toMessage(Object, Session) - start" );   
  10.         }   
  11.   
  12.          // check Type   
  13.         ActiveMQObjectMessage objMsg = (ActiveMQObjectMessage) session.createObjectMessage();   
  14.         HashMap<String,  byte []> map =  new  HashMap<String,  byte []>();   
  15.          try  {   
  16.              // POJO must implements Seralizable   
  17.             ByteArrayOutputStream bos =  new  ByteArrayOutputStream();   
  18.             ObjectOutputStream oos =  new  ObjectOutputStream(bos);   
  19.             oos.writeObject(obj);   
  20.             map.put( "POJO" , bos.toByteArray());   
  21.             objMsg.setObjectProperty( "Map" , map);   
  22.   
  23.         }  catch  (IOException e) {   
  24.             log.error( "toMessage(Object, Session)" , e);   
  25.         }   
  26.          return  objMsg;   
  27.     }   
  28.   
  29.      public  Object fromMessage(Message msg)  throws  JMSException {   
  30.          if  (log.isDebugEnabled()) {   
  31.             log.debug( "fromMessage(Message) - start" );   
  32.         }   
  33.   
  34.          if  (msg  instanceof  ObjectMessage) {   
  35.             HashMap<String,  byte []> map = (HashMap<String,  byte []>) ((ObjectMessage) msg).getObjectProperty( "Map" );   
  36.              try  {   
  37.                  // POJO must implements Seralizable   
  38.                 ByteArrayInputStream bis =  new  ByteArrayInputStream(map.get( "POJO" ));   
  39.                 ObjectInputStream ois =  new  ObjectInputStream(bis);   
  40.                 Object returnObject = ois.readObject();   
  41.                  return  returnObject;   
  42.             }  catch  (IOException e) {   
  43.                 log.error( "fromMessage(Message)" , e);   
  44.   
  45.             }  catch  (ClassNotFoundException e) {   
  46.                 log.error( "fromMessage(Message)" , e);   
  47.             }   
  48.   
  49.              return   null ;   
  50.         }  else  {   
  51.              throw   new  JMSException( "Msg:["  + msg +  "] is not Map" );   
  52.         }   
  53.     }   

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值