Java 无法自动连接异常侦听器
我创建了一个Java 无法自动连接异常侦听器,java,spring,spring-boot,jms,spring-jms,Java,Spring,Spring Boot,Jms,Spring Jms,我创建了一个MessageListener,它将使用来自Azure服务总线的消息。使用SingleConnectionFactory创建连接时,我正在尝试设置异常侦听器。myExceptionListener和Configuration都在不同的类中。因此,在我的配置类中,我试图自动连接一个实现了ExceptionListener的类。当我这样做时,我将自动连线ExceptionListener设置为空。请告诉我是否可以自动连线例外侦听器。请在下面找到我的示例代码: @Component pub
MessageListener
,它将使用来自Azure服务总线的消息。使用SingleConnectionFactory
创建连接时,我正在尝试设置异常侦听器
。myExceptionListener
和Configuration都在不同的类中。因此,在我的配置类中,我试图自动连接一个实现了ExceptionListener
的类。当我这样做时,我将自动连线ExceptionListener
设置为空。请告诉我是否可以自动连线例外侦听器
。请在下面找到我的示例代码:
@Component
public class JMSExcepListener implements ExceptionListener{
@Autowired
private DefaultMessageListenerContainer listenerContainer;
@Autowired
private SingleConnectionFactory conFactory;
@Override
public void onException(JMSException exception) {
listenerContainer.destroy();
listenerContainer.initialize();
try {
conFactory.createConnection();
} catch (JMSException e) {
e.printStackTrace();
}
System.out.println("Exception");
}}
我正在SingleConnectionFactory
@Configuration
public class AzureConfig{
@Autowired
JMSExcepListener jmsExcListener;
@Autowired
MessageConsumer messageConsumer;
@Bean
public SingleConnectionFactory jmsConnectionFactory() {
SingleConnectionFactory cachingConnectionFactory = null;
try {
cachingConnectionFactory = new SingleConnectionFactory(ConnectionFactoryImpl.createFromURL(url));
cachingConnectionFactory.setReconnectOnException(true);
cachingConnectionFactory.setClientId(applicationName);
singConnFactory.setExceptionListener(jmsExcListener);
} catch (MalformedURLException e) {
}
return cachingConnectionFactory;
}
}
@Bean
public DefaultMessageListenerContainer getContainer() {
DefaultMessageListenerContainer container = new DefaultMessageListenerContainer();
container.setConnectionFactory(jmsConnectionFactory());
container.setDestinationName(queueName);
container.setMessageListener(messageConsumer);
return container;
}
}
此处jmseclistener
为空,但消息消费者工作正常,请帮助
这是因为任何循环注入,因为我尝试在AzureConfig中注入ExceptionListener,并尝试将在AzureConfig中创建的bean注入ExceptionListener。如何解决这个问题?以防你从未注意到这一点;你有一个循环依赖链 JMSExcepListener类需要一个SingleConnectionFactory(通过autowire) 它是在AzureConfig中创建的 bean,这反过来需要一个JMSExcepListener(通过autowire)
解决方案始终是这样的:不要在配置类中的类级别自动关联依赖项。确保
jmseclistener
位于组件扫描路径上,并且组件扫描已完成enabled@borowis组件扫描已启用,我可以自动连接位于同一程序包路径中的另一个组件,这意味着您的AzureConfig不由spring管理,对吗?@borowis AzureConfig仅由spring管理。更新了代码,我可以自动连接其他组件,但ExceptionListener单独也会出现。这个ExceptionListener没有什么特别之处,你当然可以自动连接,但我无法从上面的代码片段中判断原因。也许你可以提供更多的代码?