gpt4 book ai didi

java - @JmsListener 持久订阅问题

转载 作者:行者123 更新时间:2023-12-02 12:18:38 30 4
gpt4 key购买 nike

我使用 Spring 的 @JmsListener (spring-jms-4.3.4.RELEASE.jar) 使用以下代码从 ActiveMQ 接收消息:

@Component
public class TopicSubscriber {
@JmsListener(destination="xyz.topic1", subscription="xyz_topic_durable_subscription")
public void send(Product product) {
System.out.println(" reveived message ***"+product);
}
}

根据 Spring API 的文档(下面给出的链接),上述代码应创建一个持久订阅,订阅名称为 xyz_topic_durable_subscription:

http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/jms/annotation/JmsListener.html#subscription--

但是,问题是上面的代码仅创建非持久订阅,我可以通过使用管理控制台监控 ActiveMQ 来找到它(下面添加了屏幕截图,在下面查找“xyz.topic1”目的地) “活跃的非持久主题订阅者”部分)。

是否需要对代码进行任何更改才能进行持久订阅?

最佳答案

您需要适当配置 ListenerContainerFactory:

@Bean
public JmsListenerContainerFactory<?> myFactory(ConnectionFactory connectionFactory,
DefaultJmsListenerContainerFactoryConfigurer configurer) {
DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
factory.setPubSubDomain(true);
factory.setSubscriptionDurable(true);
factory.setClientId("jmsDemo");
// This provides all boot's default to this factory, including the message converter
configurer.configure(factory, connectionFactory);
// You could still override some of Boot's default if necessary.
return factory;
}

有趣的部分在这里:

    factory.setSubscriptionDurable(true);
factory.setClientId("jmsDemo");

现在,当您进入 ActiveMQ WebConsole 时,您应该会看到以下内容:

ActiveMQ WebConsole showing one Durable Topic Subscriber

关于java - @JmsListener 持久订阅问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42300953/

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