Spring 4.1 @JmsListener配置

Spring 4.1 @JmsListener配置,第1张

概述我想使用Spring 4.1中提供的新的注释和功能,用于需要JMS侦听器的应用程序.我仔细阅读了Spring 4.1 JMS improvements post中的注释,但我仍然怀念@JmsListener和DestinationResolver之间的关系,以及如何设置应用程序来指示正确的Destination或Endpoint.这是建议使用@JmsList

我想使用Spring 4.1中提供的新的注释和功能,用于需要JMS侦听器的应用程序.

我仔细阅读了Spring 4.1 JMS improvements post中的注释,但我仍然怀念@JmsListener和DestinationResolver之间的关系,以及如何设置应用程序来指示正确的Destination或Endpoint.

这是建议使用@JmsListener

@Componentpublic class MyService {    @JmsListener(containerFactory = "myContainerFactory",destination = "myQueue")    public voID processOrder(String data) { ... }}

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

我可以使用DestinationResolver设置一个合适的myContainerFactory,但是大多数情况下,如果您不需要JNDI在应用服务器中查找队列,并且不需要执行一些自定义回复逻辑,那么您似乎只需使用DynamicDestinationResolver.我只是想了解Spring如何使用@JmsListener注释以参数化的方式来指示队列的名称.

在博客文章的后面,我发现这个配置文件的引用:

@Configuration@EnableJmspublic class AppConfig implements JmsListenerConfigurer {@OverrIDepublic 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指定适当的队列名称的任何提示?

最佳答案你最终可以这样做,但这有点复杂.您可以使用JmsListenerConfigurer设置自定义JmsListenerEndpointRegistry

@Configuration@EnableJmspublic class AppConfig implements JmsListenerConfigurer {    @OverrIDe    public voID configureJmsListeners(JmsListenerEndpointRegistrar registrar) {        registrar.setEndpointRegistry(customregistry());    }}

然后覆盖registerListenerContainer方法,就像

public voID registerListenerContainer(JmsListenerEndpoint endpoint,JmsListenerContainerFactory

但是我们可以做得更好.请看/投票SPR-12280 总结

以上是内存溢出为你收集整理的Spring 4.1 @JmsListener配置全部内容,希望文章能够帮你解决Spring 4.1 @JmsListener配置所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1269951.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)