`

转-----安装配置ActiveMQ5.0

    博客分类:
  • jms
阅读更多
转---http://jinguo.iteye.com/blog/233206
简介
  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.}  [size=medium]
[/size]
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics