这个鸟东西文档太少了,在多线程时经常报错,发送时可能报错,接收时也报错,在别人电脑上不报错,在我电脑上就容易出错。而且一出SocketException就完蛋。自带的线程池只用一个ActiveMQConnection, 检测到网络错误后,直接关闭连接,而外部的线程池包装没有对连接检查是否closed就返回,造成一出错消息就中断。

开始的想法是我自己加上关闭检查,在连接池中检查如果出错就返回新建的连接。这样MessageListener也要重新注册,奇怪的是,Session中注册的异常处理器居然实效。。。。

后来ActiveMQ论坛上的高手告诉我:要用自动重连功能:reliable:tcp://host:port作为URL, faint, 看文档好像是在多个url之间切换用的。

在老外答复之前,试用了他们的4.0M2版,这个版本改动比较大,碰到以下问题:
1. spring支持没有了。自己启动如下:
   broker = org.activemq.broker.BrokerFactory.createBroker(new URI(
     "broker:(tcp://localhost:61616)?persistent=false"));
   broker.start();
2. URL规则变化,见上。
3. 在多线程时错误不同,在关闭PooledSession时报错:pool closed. 
  经过检查,发现PooledConnection.close()方法画蛇添足把共享的cache给关闭了。注释掉后正常。
4. 自动重连url: failover:tcp://host:port

4.0版在启动后速度很快,以前好像有个DNS解析时间没有了。

   
posted on 2005-12-08 18:30  steeven  阅读(13185)  评论(20编辑  收藏  举报