`
sony-soft
  • 浏览: 1027412 次
文章分类
社区版块
存档分类
最新评论

安装配置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. *Loggerforthisclass
  4. */
  5. private static final Loglog=LogFactory.getLog(DefaultMessageConverter. class );
  6. public MessagetoMessage(Objectobj,Sessionsession) throws JMSException{
  7. if (log.isDebugEnabled()){
  8. log.debug( "toMessage(Object,Session)-start" );
  9. }
  10. //checkType
  11. ActiveMQObjectMessageobjMsg=(ActiveMQObjectMessage)session.createObjectMessage();
  12. HashMap<String, byte []>map= new HashMap<String, byte []>();
  13. try {
  14. //POJOmustimplementsSeralizable
  15. ByteArrayOutputStreambos= new ByteArrayOutputStream();
  16. ObjectOutputStreamoos= new ObjectOutputStream(bos);
  17. oos.writeObject(obj);
  18. map.put( "POJO" ,bos.toByteArray());
  19. objMsg.setObjectProperty( "Map" ,map);
  20. } catch (IOExceptione){
  21. log.error( "toMessage(Object,Session)" ,e);
  22. }
  23. return objMsg;
  24. }
  25. public ObjectfromMessage(Messagemsg) throws JMSException{
  26. if (log.isDebugEnabled()){
  27. log.debug( "fromMessage(Message)-start" );
  28. }
  29. if (msg instanceof ObjectMessage){
  30. HashMap<String, byte []>map=(HashMap<String, byte []>)((ObjectMessage)msg).getObjectProperty( "Map" );
  31. try {
  32. //POJOmustimplementsSeralizable
  33. ByteArrayInputStreambis= new ByteArrayInputStream(map.get( "POJO" ));
  34. ObjectInputStreamois= new ObjectInputStream(bis);
  35. ObjectreturnObject=ois.readObject();
  36. return returnObject;
  37. } catch (IOExceptione){
  38. log.error( "fromMessage(Message)" ,e);
  39. } catch (ClassNotFoundExceptione){
  40. log.error( "fromMessage(Message)" ,e);
  41. }
  42. return null ;
  43. } else {
  44. throw new JMSException( "Msg:[" +msg+ "]isnotMap" );
  45. }
  46. }
  47. }
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics