提问者:小点点

ActiveMQ新主题,没有消费者,不会丢弃消息


我正在构建一个软件解决方案,它可以为每个新的类别创建JMS主题。主题是在集成第一轮数据时创建的,并且必须通信。对该主题的持久订阅由消费者创建,但仅在类别和第一个数据创建后的一段时间内。属于该类别的所有数据都作为消息发送给消费者,以便它们也被更新。

在创建类别和创建持久订阅之间,最好丢弃消息。消费者首先对存量数据进行初始同步,然后创建持久订阅并侦听创建/更新消息。

一种选择是让消费者在注册第一个持久订阅时创建主题。同时,如果数据被添加到类别中,它不会被产品发送,因此也不会创建主题。

另一种选择是如果不存在消费者,则丢弃消息。我不是在谈论活动消费者,我是在谈论根本没有消费者。知道这是否可以实现吗?由于该主题没有持久/非持久订阅,我期望消息会自动丢弃,但我错了。

你会选择哪个选项?

如果您查看下图,您将看到一个主题,该主题从未有4498条消息排队的订阅者。我是否以错误的方式解释此信息?


共1个答案

匿名用户

当不存在订阅时(无论是否持久)发送到主题的消息都应该被丢弃。这是预期的行为。

Web控制台上可见的"Messages Enqueued"指标并不表示您认为的含义。此指标仅表示自上次重新启动以来发送到主题的消息总数。它不指示该主题的订阅中保留了多少消息(如果有)。