`

安装配置ActiveMQ5.0

    博客分类:
  • JMS
阅读更多

简介

  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.iteye.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.     }   
  54. }  
分享到:
评论
1 楼 DEMONU 2014-05-08  
不错,真正学习这方面的。3gods.com

相关推荐

    activeMq5.0

    在学习和使用ActiveMQ 5.0时,你可能需要了解如何创建和配置消息代理、如何编写生产者和消费者代码、如何设置安全策略、如何使用管理工具监控系统状态等。通过实践这些基本操作,你可以深入理解消息中间件的工作原理...

    activemq与spring整合源代码

    2. 配置ActiveMQ服务器:在服务器端配置ActiveMQ,启动服务器,并创建需要的队列或主题。 3. Spring配置:在Spring的配置文件中,定义JMS相关的bean,包括ConnectionFactory、Destination(队列或主题)、Message...

    activeMQ集群的使用与配置[收集].pdf

    需要注意的是,在ActiveMQ 5.0版本中存在一个bug:采用AMQ Message Store,运行一个producer,两个consumer,并采用特定的配置文件时,可能会报出错误。这个bug已经被修正,预定在5.1.0版本上体现。 Broker ...

    activeMQ集群的使用与配置[归类].pdf

    然而,在ActiveMQ 5.0版本中,存在一个已知的bug,可能导致消息无法恢复。官方文档表示该问题已在5.1.0版本中修复。 2. Broker Clusters: Broker集群则涉及到多个消息代理(brokers)的协作,以提供容错和负载...

    activeMQ介绍

    【ActiveMQ介绍】 ActiveMQ是Apache软件基金会开发的一款开源消息中间件,它是Java消息服务(JMS)的实现,能够支持多种消息协议,如AMQP、...了解并掌握这些基本概念和机制对于有效地使用和配置ActiveMQ至关重要。

    activeMQ集群的使用与配置.pdf

    然而,在ActiveMQ 5.0版本中,存在一个已知的bug,可能会导致消息恢复失败。官方文档指出,此问题已在5.1.0版本中得到修复。 2. **Broker Clusters** Broker Clusters 的目标是提供冗余和故障转移能力。在这种配置...

    TongWeb5.0第三方产品使用指南

    它覆盖了Apache与TongWeb5.0的深度集成、SSL安全配置、OpenSSL证书生成、OpenLDAP的部署与管理,以及ActiveMQ的JAAS安全认证等多个方面,旨在帮助读者掌握关键技术点,提升系统整体性能与安全性。

    ActiveMQ集群

    然而,在ActiveMQ 5.0版本中,存在一个已知的bug,即在AMQ Message Store配置下,长时间运行可能导致恢复失败的问题。官方文档表示此bug已在5.1.0版本中得到修复。 2. Broker Clusters: Broker Clusters主要用于...

    ActiveMQ开发实例-6

    #### 二、ActiveMQ安装与配置 ##### 2.1 安装环境要求 - **Java环境**: ActiveMQ的运行需要Java环境支持,建议使用JDK 5.0及以上版本。 - **下载与安装**: 下载最新版的ActiveMQ包,并根据操作系统选择相应的安装...

    active mq 学习笔记

    - ActiveMQ 5.0及以上版本默认启动了一个内置的Jetty服务器,提供了用于监控和管理的Admin应用及示例应用。 - **Admin应用**:通过浏览器访问`http://127.0.0.1:8161/admin/` - **Demo应用**:通过浏览器访问`...

    PyPI 官网下载 | django-stomp-5.0.0.tar.gz

    STOMP是一种轻量级的消息协议,允许客户端与消息代理(如ActiveMQ、RabbitMQ等)进行通信。它的设计目标是简化消息传递,使其能够在各种编程语言和平台之间无缝工作。STOMP通过简单的文本帧结构来发送和接收消息,...

Global site tag (gtag.js) - Google Analytics