我有一个MDB,当部署在glassfish上时,它会设法使用ActiveMQ建议消息。
但是当我在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 :(得分:1)
您尝试使用哪些建议消息?
查看文档here ...我看到ActiveMQ.Advisory.Consumer.Queue
列为 Consumer start&停止队列上的消息。您的目标是ActiveMQ.Advisory.Consumer.Queue.User.*
,那么您是否有一个名为User
的队列?这是一个队列还是User
下面有多个队列?
同样阅读文档,多年来咨询队列名称似乎发生了一些变化。您可以检查平台上的ActiveMQ版本,并确保您将苹果与苹果进行比较吗?此外,在我列出的文档页面上,我有点想知道是否有一些建议被禁用。它没有将该特定队列列为可以被禁用的队列,但您可以尝试明确启用所有建议,看看是否有帮助。
答案 1 :(得分:0)
我偶然试图删除
mappedName = "ActiveMQ.Advisory.Consumer.Queue"
来自@MessageDriven注释的突然它可以在TomEE和glassfish上运行。不知道我为什么首先添加它,猜测它也不需要玻璃鱼。