ActiveMQ新主题,无消费者,不丢弃消息
ActiveMQ new topic, without consumer, doesn't discard messages
我正在构建一个软件解决方案,它可以为每个新类别的事物创建 JMS 主题。主题是在第一轮数据集成时创建的,必须进行通信。
该主题的持久订阅由消费者创建,但仅在创建类别和第一个数据后的一段时间内创建。所有属于该类别的数据都作为消息发送给消费者,以便他们也得到更新。
在创建类别和创建持久订阅之间,最好丢弃消息。消费者首先对现有数据进行初始同步,然后创建持久订阅并侦听 create/update 条消息。
一个选项是让消费者在注册第一个持久订阅时创建主题。同时,如果将数据添加到类别中,则不会由产品发送,因此也不会创建主题。
另一种选择是在不存在消费者时丢弃消息。我不是在谈论活跃的消费者,我是在谈论根本没有消费者。知道这是否可以实施吗?由于该主题没有 durable/non-durable 订阅,我原以为这些消息会被自动丢弃,但我错了。
你会选择哪个选项?
如果您查看下图,您会看到一个从未有订阅者的主题,其中有 4498 条消息排队。我是否以错误的方式解释了这些信息?
当不存在订阅(无论是否持久)时发送到主题的消息应该被丢弃。这是预期的行为。
Web 控制台上显示的 "Messages Enqueued" 指标与您认为的不同。该指标仅表示自上次重启以来发送到主题的消息总数。它不 表示在该主题的订阅中保留了多少消息(如果有的话)。
我正在构建一个软件解决方案,它可以为每个新类别的事物创建 JMS 主题。主题是在第一轮数据集成时创建的,必须进行通信。 该主题的持久订阅由消费者创建,但仅在创建类别和第一个数据后的一段时间内创建。所有属于该类别的数据都作为消息发送给消费者,以便他们也得到更新。
在创建类别和创建持久订阅之间,最好丢弃消息。消费者首先对现有数据进行初始同步,然后创建持久订阅并侦听 create/update 条消息。
一个选项是让消费者在注册第一个持久订阅时创建主题。同时,如果将数据添加到类别中,则不会由产品发送,因此也不会创建主题。
另一种选择是在不存在消费者时丢弃消息。我不是在谈论活跃的消费者,我是在谈论根本没有消费者。知道这是否可以实施吗?由于该主题没有 durable/non-durable 订阅,我原以为这些消息会被自动丢弃,但我错了。
你会选择哪个选项?
如果您查看下图,您会看到一个从未有订阅者的主题,其中有 4498 条消息排队。我是否以错误的方式解释了这些信息?
当不存在订阅(无论是否持久)时发送到主题的消息应该被丢弃。这是预期的行为。
Web 控制台上显示的 "Messages Enqueued" 指标与您认为的不同。该指标仅表示自上次重启以来发送到主题的消息总数。它不 表示在该主题的订阅中保留了多少消息(如果有的话)。