持久侦听器/使用者的用例场景

所以我正在创建一个主题的并发消费者,即多个听众。 我将它们配置为耐用。

@Bean public DefaultMessageListenerContainer listenerContainers() { DefaultMessageListenerContainer container = new DefaultMessageListenerContainer(); container.setConnectionFactory(connectionFactory()); container.setDestinationName(COMMENT_QUEUE); container.setPubSubDomain(true); container.setSessionTransacted(true); container.setConcurrentConsumers(2); container.setSubscriptionDurable(true); container.setMessageListener(datafileSubscriber); container.start(); return container; } 

我在想耐用消费者的用例场景

我有一个发布消息的进程,并且消息由侦听器获取。 我在想是否有人停止了这个过程并重新启动它,我不会丢失消息和他们的处理,因为f耐用的消费者。

是对的吗?

我不会丢失消息,因为消息在KahaDB中,并且在重新启动进程后,它将重新发送尚未完全处理给侦听器的消息,因为它们是持久的。 这是正确的解释吗?

那是正确的; 默认情况下,主题订阅不是持久的; 只有订阅者主动消费获取消息。 新消费者只会在订阅时发布新消息。

持久的消费者更像是一个队列; 经纪人跟踪他们并保持信息,直到所有这些消费者都收到它们。

订阅仅在建立时变得持久。 如果经纪人不知道,则不会保留消息。 因此,在发布任何消息之前建立持久订阅非常重要。