topicJmsListenerContainerFactory 是否支持异步处理——Azure Spring JMS?

时间:2021-01-06 10:49:54

标签: java azure spring-boot jms spring-jms

我正在尝试从 azure 服务总线主题异步读取消息。我已经根据 MS 文档创建了 JMS 侦听器

  @JmsListener(destination = TOPIC_NAME, containerFactory = "topicJmsListenerContainerFactory",
            subscription = SUBSCRIPTION_NAME)
    public void receiveMessage(User user) {
        logger.info("Received message: {}", user.getName());
    }

我需要确保 topicJmsListenerContainerFactory 容器工厂是否支持异步处理?

Spring 文档说 enter image description here

我尝试像下面那样实现 DefaultJmsListenerContainerFactory,但是通过使用它,我无法从服务总线顶部获取任何消息。它抛出异常找不到消息传递实体。我可以使用 topicJmsListenerContainerFactory 容器工厂获取消息

@Bean
@ConditionalOnMissingBean(name = "jmsListenerContainerFactory")
public DefaultJmsListenerContainerFactory jmsListenerContainerFactory(DefaultJmsListenerContainerFactoryConfigurer Configure, ConnectionFactory connectionFactory) {
    DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
    Configure.configure(factory, connectionFactory);
    return factory;
}

参考:

https://docs.microsoft.com/en-us/azure/developer/java/spring-framework/configure-spring-boot-starter-java-app-with-azure-service-bus

How to create DefaultMessageListenerContainer in Spring-Boot?

https://docs.microsoft.com/en-us/java/api/com.azure.spring.autoconfigure.jms.servicebusjmsautoconfiguration.topicjmslistenercontainerfactory?view=azure-java-preview

https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/jms/annotation/JmsListener.html

有人请教一下吗?

1 个答案:

答案 0 :(得分:1)

是的。 快速浏览https://github.com/Azure/azure-sdk-for-java/blob/e81850c3fcebe0bbfe65ed3e8a1c7c0c607798cf/sdk/spring/azure-spring-boot/src/main/java/com/azure/spring/autoconfigure/jms/ServiceBusJMSAutoConfiguration.java#L71

提供 topicJmsListenerContainerFactory 也是 DefaultJmsListenerContainerFactory 类的实例,正如我们所知,DefaultJmsListenerContainerFactory 提供了 Spring JMS 的所有优点,因此它应该可以正常工作。

相关问题