现在的位置: 首页 > 综合 > 正文

安装配置ActiveMQ5.0

2018年08月11日 ⁄ 综合 ⁄ 共 3354字 ⁄ 字号 评论关闭
文章目录

简介

  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.     }   

抱歉!评论已关闭.