ActiveMQQueue转Queue类型不匹配,为何服务端正常客户端异常?
问题:ActiveMQQueue与Queue类型转换异常
我正在实现主应用作为服务端监听消息、辅助应用(客户端)通过ActiveMQ远程服务器发送消息的功能。在客户端定义队列Bean时遇到了类型转换问题,代码如下:
@Bean Queue queue() { return new ActiveMQQueue("remotingQueue"); }
编译时出现报错:
Type mismatch: cannot convert from ActiveMQQueue to Queue
Eclipse给出了两个解决方案:
- 添加强制转换为
Queue - 将方法返回类型改为
ActiveMQQueue
选择第一种方案可以消除编译错误,但运行时会抛出异常:
class org.apache.activemq.command.ActiveMQQueue cannot be cast to class javax.jms.Queue
即使不添加强制转换直接运行,也会出现同样的运行时异常。
第二种方案(修改方法返回类型为ActiveMQQueue)可以解决编译和运行问题,但我不确定这样配置队列能否实现与服务端队列同步的目标——因为服务端使用完全相同的定义却没有任何问题:
@Bean Queue queue() { return new ActiveMQQueue("remotingQueue"); }
为什么同样的代码定义在服务端可行,在客户端却出现类型转换问题?
内容的提问来源于stack exchange,提问作者Holland Park
相关产品推荐
相关产品推荐

