0

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

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

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

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

你会选择哪个选项?

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

在此处输入图像描述

4

1 回答 1

1

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

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

于 2020-02-06T01:28:15.087 回答