Java 从主题中删除的时间点消息是什么?

Java 从主题中删除的时间点消息是什么?,java,jms,activemq,jms-topic,Java,Jms,Activemq,Jms Topic,我有一个话题。我有10个消费者订阅了它。根据我的理解,此消息将从 主题,直到所有消费者都收到为止。正当一旦删除,任何其他订户 将不会通知该特定消息。我无法在任何地方的JMS规范中确认它。在这种情况下,只有活动订阅者才会收到您的消息,在删除消息之后。 如果您还想将邮件发送给非活动订阅者,您可以配置持久订阅。在这种情况下,只有活动订阅者才能收到您的邮件,然后删除您的邮件。 如果您还想将消息发送给非活动订阅服务器,则可以配置持久订阅。代理(在您的情况下为活动MQ)将向所有活动订阅服务器(包括持久订阅服

我有一个话题。我有10个消费者订阅了它。根据我的理解,此消息将从 主题,直到所有消费者都收到为止。正当一旦删除,任何其他订户
将不会通知该特定消息。我无法在任何地方的JMS规范中确认它。

在这种情况下,只有活动订阅者才会收到您的消息,在删除消息之后。
如果您还想将邮件发送给非活动订阅者,您可以配置持久订阅。

在这种情况下,只有活动订阅者才能收到您的邮件,然后删除您的邮件。 如果您还想将消息发送给非活动订阅服务器,则可以配置持久订阅。

代理(在您的情况下为活动MQ)将向所有活动订阅服务器(包括持久订阅服务器和非持久订阅服务器)发送发布(指在发布主题时正在运行的消费应用程序,消费消息和任何未激活的持久订阅者)。然后代理将放弃该发布。如果主题没有活动订阅服务器或持久订阅服务器,代理将立即放弃该发布。它不会等待任何订阅服务器变为活动订阅服务器。唯一的例外是“保留的发布”正在执行的选项,其中代理将缓存发布并交付给可能稍后到达的消费者。但请注意,代理不会等待所有消费者收到发布后再将其从主题中删除。我想说的是,没有什么比“从主题中删除”更像

希望我说得清楚。

代理(在您的情况下是Active MQ)将向所有活动订阅服务器(包括持久订阅服务器和非持久订阅服务器)(指在主题上发布时正在运行的消费应用程序,消费消息和任何非活动的持久订阅服务器)。然后代理将放弃该发布。如果主题没有活动订阅服务器或持久订阅服务器,代理将立即放弃该发布。它不会等待任何订阅服务器变为活动订阅服务器。唯一的例外是“保留的发布”正在执行的选项,其中代理将缓存发布并交付给可能稍后到达的消费者。但请注意,代理不会等待所有消费者收到发布后再将其从主题中删除。我想说的是,没有什么比“从主题中删除”更像


希望我说的很清楚。

那么它可能是特定于实现的。为什么不编写一个测试来公开该行为?那么它可能是特定于实现的。为什么不编写一个测试来公开该行为?Jakub我没有把您带到这里。您是想说,对于非持久订阅,一旦所有活动订阅方都收到该消息,消息将被删除。对于持久订阅,只有当所有活动和非活动订阅方都收到消息时,消息才会被删除。对吗?是的,没错。请记住,每个订阅方都有自己的消息副本。Jakub我没有在这里找到您。您是想说,对于非持久订阅,消息将在所有活动订阅方收到后被删除吗获取消息。对于持久订阅,只有当所有活动和非活动订阅者都获得消息时,消息才会被删除。对吗?是的,没错。请记住,每个订阅者都有自己的消息副本。您说过“但请注意,代理不会等到所有使用者都收到发布后再将其从主题中删除”我想您的意思是,代理将从其一侧交付它,但不等待消费者确认它是否收到它?根据代理实现,每个订阅者将在代理中分配一些空间用于接收发布。该空间可以是一个队列。假设使用了队列,代理将放置发布进入这些队列并继续处理来自Publisher的发布。既然消息已在队列中,则应由消费者从这些队列中提取发布。这就是我所说的“Broker不等待消费者接收发布”的意思但请注意,代理不会等到所有使用者都收到发布后才将其从主题中删除"我想您的意思是,代理将从其一侧交付它,但不等待消费者确认它是否收到它?根据代理实现,每个订阅者将在代理中分配一些空间用于接收发布。该空间可以是一个队列。假设使用了队列,代理将放置发布进入这些队列并继续处理来自Publisher的发布。既然消息已在队列中,则应由消费者从这些队列中提取发布。这就是我所说的“Broker不等待消费者接收发布”的意思