2013-04-18 16 views
0

我有一个MDB,在部署在glassfish上时可以使用ActiveMQ建议消息。在tomEE中使用ActiveMQ建议消息mdb

但是当我在tomEE上部署时,此MDB不消耗任何建议消息。有什么我需要打开吗?

@MessageDriven(mappedName = "ActiveMQ.Advisory.Consumer.Queue", activationConfig = { 
     @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Topic"), 
     @ActivationConfigProperty(propertyName = "destination", propertyValue = "ActiveMQ.Advisory.Consumer.Queue.User.*") }) 
public class AdvisoryMdb implements MessageListener { 
    private final Logger logger = LoggerFactory.getLogger(getClass().getName()); 

    @Override 
    public void onMessage(Message message) { 
     logger.info("onMessage() {}", message); 
    } 
} 

(在TomEE我设法成功地生产和消费这些队列上,我想咨询的消息)

编辑:我测试,以对这些咨询的话题之一消耗一个独立的客户端,并得到了消息如预期。所以建议消息被成功发送,只是我的mdb不能正确地接收它们。

回答

0

一次偶然的机会我试图从@MessageDriven注释去掉

mappedName = "ActiveMQ.Advisory.Consumer.Queue" 

,突然它的工作原理上都TomEE和GlassFish。不知道为什么我首先补充说,猜测它对玻璃鱼也不需要。

1

你试图消费什么咨询信息?

考虑看看文档here ...我看到ActiveMQ.Advisory.Consumer.Queue被列为含义消费者开始队列 &停止消息。你的目标是ActiveMQ.Advisory.Consumer.Queue.User.*,那么你有一个叫User的队列吗?这是单个队列还是User下面有多个队列?

同时阅读文档,在咨询队列名称的年份似乎有一些变化。你可以检查平台上的ActiveMQ版本,并确保你比较苹果和苹果吗?另外,在我列出的文档页面上,我想知道是否某些建议被禁用。它没有列出那个可以被禁用的特定队列,但你可以尝试明确地启用所有的建议,看看是否有帮助。

+0

感谢您的关注,我设法自己解决这个问题 –

+0

正在监听ActiveMQ.Advisory.Consumer.Queue.User。*意味着它将在匹配模式“User。*”的队列中选择消费者事件。 –