安装ActiiveMQ

安装

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

 解压apache-activemq-XX-incubator.zip(或者apache-activemq-XX-incubator.tar.gz)目录如下:  
  +bin (windows下面的bat和unix/linux下面的sh)
  +conf (activeMQ配置目录,包含最基本的activeMQ配置文件)
  +data (默认是空的)
  +docs (index,replease版本里面没有文档,-.-b不知道为啥不带)
  +example (几个例子
  +lib (activemMQ使用到的lib)
  -apache-activemq-4.1-incubator.jar (ActiveMQ的binary)
  -LICENSE.txt  
  -NOTICE.txt  
  -README.txt
  -user-guide.html

   
  +bin (windows下面的bat和unix/linux下面的sh)
  +conf (activeMQ配置目录,包含最基本的activeMQ配置文件)
  +data (默认是空的)
  +docs (index,replease版本里面没有文档,-.-b不知道为啥不带)
  +example (几个例子
  +lib (activemMQ使用到的lib)
  -apache-activemq-4.1-incubator.jar (ActiveMQ的binary)
  -LICENSE.txt  
  -NOTICE.txt  
  -README.txt

  -user-guide.html

启动

  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/

配置

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

测试你的ActiveMQ
   
  由于ActiveMQ是一个独立的jms provider,所以我们不需要其他任何第三方服务器就可以马上做我们的测试了.编译
  example目录下面的程序
   
  ProducerTool/ConsumerTool 是JMS参考里面提到的典型应用,Producer产生消息,Consumer消费消息
  而且这个例子还可以加入参数帮助你测试刚才启动的本地ActiveMQ或者是远程的ActiveMQ

  ProducerTool [url] broker的地址,默认的是tcp://localhost:61616 
  [true|flase] 是否使用topic,默认是false
  [subject] subject的名字,默认是TOOL.DEFAULT
  [durabl] 是否持久化消息,默认是false
  [messagecount] 发送消息数量,默认是10
  [messagesize] 消息长度,默认是255
  [clientID] durable为true的时候,需要配置clientID
  [timeToLive] 消息存活时间 
  [sleepTime] 发送消息中间的休眠时间
  [transacte] 是否采用事务

   
  ConsumerTool [url] broker的地址,默认的是tcp://localhost:61616 
  [true|flase] 是否使用topic,默认是false
  [subject] subject的名字,默认是TOOL.DEFAULT
  [durabl] 是否持久化消息,默认是false
  [maxiumMessages] 接受最大消息数量,0表示不限制
   
  [clientID] durable为true的时候,需要配置clientID
   
  [transacte] 是否采用事务
  [sleepTime] 接受消息中间的休眠时间,默认是0,onMeesage方法不休眠
  [receiveTimeOut] 接受超时

  我们这样可以使用:
  java -classpath .\apache-activemq-4.1-incubator.jar;example\bin ProducerTool tcp://192.168.3.142:61616 test.mysubject
  java -classpath .\apache-activemq-4.1-incubator.jar;example\bin ConsumerTool tcp://192.168.3.142:61616 test.mysubject

  当然你可以使用上面的参数进行更复杂的测试,持久,事务

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值