gpt4 book ai didi

java - 持久监听器/消费者的用例场景

转载 作者:行者123 更新时间:2023-12-02 12:11:44 25 4
gpt4 key购买 nike

因此,我正在为一个主题创建并发消费者,即多个监听器。我将它们配置为耐用。

@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;
}

我认为耐用消费者的用例场景是

我有一个发布消息的流程,并且该消息由监听器接收。我在想,如果有人停止该进程,然后我再次重新启动它,我就不会丢失消息及其处理,因为有持久的消费者。

是吗?

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

最佳答案

这是正确的;主题订阅默认不持久;只有主动消费的订阅者才能获取消息。新消费者只会在订阅时收到发布的新消息。

持久消费者的行为更像是一个队列;代理会跟踪它们并保留消息,直到所有此类消费者都收到它们。

订阅只有在建立后才变得持久。如果代理不知道这一点,则不会保留消息。因此,在发布任何消息之前建立持久订阅非常重要。

关于java - 持久监听器/消费者的用例场景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46490934/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com