gpt4 book ai didi

Spring 4.1 @JmsListener 配置

转载 作者:IT老高 更新时间:2023-10-28 13:45:43 26 4
gpt4 key购买 nike

我想将 Spring 4.1 中提供的新注释和特性用于需要 JMS 监听器的应用程序。

我已仔细阅读 Spring 4.1 JMS improvements post 中的注释但我仍然想念 @JmsListenerDestinationResolver 之间的关系,以及我将如何设置应用程序以指示正确的 Destination端点.

这是@JmsListener 的建议用法

@Component
public class MyService {

@JmsListener(containerFactory = "myContainerFactory", destination = "myQueue")
public void processOrder(String data) { ... }
}

现在,我不能在我的实际代码中使用它,因为需要使用 Environment.getProperty() 从配置文件中读取“myQueue”。

我可以使用 DestinationResolver 设置适当的 myContainerFactory,但大多数情况下,如果您不需要 JNDI 在应用程序中查找队列,您似乎只需使用 DynamicDestinationResolver服务器,不需要做一些自定义回复逻辑。我只是想了解 Spring 如何希望我使用 @JmsListener 注释以参数化方式指示队列的名称。

在博客文章的后面,我找到了对这个配置器的引用:

@Configuration
@EnableJms
public class AppConfig implements JmsListenerConfigurer {

@Override
public void configureJmsListeners(JmsListenerEndpointRegistrar registrar) {
registrar.setDefaultContainerFactory(defaultContainerFactory());

SimpleJmsListenerEndpoint endpoint = new SimpleJmsListenerEndpoint();
endpoint.setDestination("anotherQueue");
endpoint.setMessageListener(message -> {
// processing
});
registrar.registerEndpoint(endpoint);
}

现在,这有一定的意义,我可以看到这将允许我在运行时从一些外部字符串设置目的地,但这似乎与使用 @JmsListener 冲突它似乎覆盖了上面代码中的 endpoint.setMessageListener 的注释。

关于如何使用 @JmsListener 指定适当队列名称的任何提示?

最佳答案

另请注意,根据用例,您已经可以使用每个环境的属性文件和 PropertySourcesPlaceholderConfigurer 进行参数化

@JmsListener(destinations = "${some.key}")

根据 https://jira.spring.io/browse/SPR-12289

关于Spring 4.1 @JmsListener 配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25899940/

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