0

我有一个 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 没有正确接收它们。

4

2 回答 2

1

您尝试使用哪些咨询消息?

看看这里的文档......我看到ActiveMQ.Advisory.Consumer.Queue列出的含义是Consumer start & stop messages on a Queue。您的目标是ActiveMQ.Advisory.Consumer.Queue.User.*,那么您是否有一个名为的队列User?这是一个队列还是下面有多个队列User

同样阅读文档,咨询队列名称多年来似乎发生了一些变化。您能否检查跨平台的 ActiveMQ 版本并确保您将苹果与苹果进行比较?此外,在我列出的文档页面上,我有点想知道是否禁用了某些建议。它没有将该特定队列列为可以禁用的队列,但您可以尝试显式启用所有建议,看看是否有帮助。

于 2013-04-25T03:38:07.950 回答
0

碰巧我试图删除

mappedName = "ActiveMQ.Advisory.Consumer.Queue"

来自@MessageDriven 注释,突然它适用于 TomEE 和 glassfish。不知道为什么我首先添加了它,猜测 glassfish 也不需要它。

于 2013-04-26T16:43:39.100 回答