找到了this guide from Microsoft关于如何在Spring中使用JMS侦听Azure服务总线。我喜欢使用@JmsListener
注解的简单而干净的实现。我已经让它工作了,并希望继续使用@JmsListener(destination = "QUEUENAME", containerFactory = "jmsListenerContainerFactory")
和自动配置。我当前的JMS方法有两个问题;根据我对文档的理解,默认情况下没有注册错误处理程序,也没有启用事务。
我已经读到我可以用下面的配置代码替换默认的jmsListenerContainerFactory
Bean,这将解决这两个问题。
@Bean
fun jmsListenerContainerFactory(
connectionFactory: ConnectionFactory,
errorHandler: CustomErrorHandler
): DefaultJmsListenerContainerFactory {
val factory = DefaultJmsListenerContainerFactory()
factory.setConnectionFactory(connectionFactory)
factory.setErrorHandler(errorHandler)
factory.setSessionTransacted(true)
return factory
}
现在出现的新问题是No qualifying bean of type 'jakarta.jms.ConnectionFactory'
。
有没有办法让spring-cloud-azure-starter-servicebus-jms
提供这个ConnectionFactory,就像它以前在自动配置一切时所做的那样?或者,是否有一种简单的方法来创建ConnectionFactory,以便我可以连接到服务总线?
1条答案
按热度按时间bqjvbblv1#
没有得到这个工作,所以放弃了库
spring-cloud-azure-starter-servicebus-jms
,支持qpid-jms-client
(我相信这是底层库)。下面的配置在我使用qpid-jms-client
时有效。(客户端ID只是持久订阅所需的,它可以是任何值)JmsConnectionFactory
来自qpid-jms-client