[SPRING] JMS 메시지 수신기 실행에 실패했으며 ErrorHandler가 설정되지 않았습니다.
SPRINGJMS 메시지 수신기 실행에 실패했으며 ErrorHandler가 설정되지 않았습니다.
Spring을 사용하여 JMS 메시지를 수신 할 때 위의 오류가 발생했습니다.
JMS 수신기에 Errorhandler를 추가하는 방법이 궁금합니다.
해결법
-
==============================
1.AbstractMessageListenerContainer에는 속성이 있습니다.
AbstractMessageListenerContainer에는 속성이 있습니다.
<bean id="listener" class="org.springframework.jms.listener.DefaultMessageListenerContainer"> <property name="errorHandler" ref="someHandler"/> <property name="destinationName" value="someQueue"/> <property name="connectionFactory" ref="connectionFactory"/> </bean>
someHandler가 ErrorHandler를 구현하는 bean 인 곳 :
@Service public class SomeHandler implements ErrorHandler { @Override public void handleError(Throwable t) { log.error("Error in listener", t); } }
그러나 문서에 따르면 :
로그를 확인하십시오. 예외가 이미 기록되었을 수 있습니다.
-
==============================
2.xml 구성없이. 나는 ApplicationContext에서 다음을 수행했다.
xml 구성없이. 나는 ApplicationContext에서 다음을 수행했다.
@Bean JmsListenerContainerFactory<?> jmsContainerFactory(ConnectionFactory connectionFactory, SomeHandler errorHandler) { SimpleJmsListenerContainerFactory factory = new SimpleJmsListenerContainerFactory(); factory.setConnectionFactory(connectionFactory); factory.setErrorHandler(errorHandler); return factory; } // From Tomasz answer @Service public class SomeHandler implements ErrorHandler { @Override public void handleError(Throwable t) { log.error("Error in listener", t); } }
-
==============================
3.나는 짧고 달콤한 것을 좋아한다!
나는 짧고 달콤한 것을 좋아한다!
@Bean JmsListenerContainerFactory<?> jmsContainerFactory(ConnectionFactory connectionFactory) { SimpleJmsListenerContainerFactory factory = new SimpleJmsListenerContainerFactory(); factory.setConnectionFactory(connectionFactory); factory.setErrorHandler(t -> { log.error("Error in listener!", t); }); return factory; }
-
==============================
4.기본 공장 사용시 :
기본 공장 사용시 :
@Bean public DefaultJmsListenerContainerFactory jmsListenerContainerFactory(ConnectionFactory connectionFactory, SomeHandler errorHandler) { DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory(); factory.setConnectionFactory(connectionFactory); factory.setErrorHandler(errorHandler); return factory; }
from https://stackoverflow.com/questions/8922532/execution-of-jms-message-listener-failed-and-no-errorhandler-has-been-set by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 스프링 보안 - 애플리케이션 컨텍스트에서 WebSecurityExpressionHandler 인스턴스를 찾을 수 없음 (0) | 2019.02.13 |
---|---|
[SPRING] 순환 뷰 경로 오류 봄 부팅 (0) | 2019.02.13 |
[SPRING] 최고의 Java REST API는 무엇입니까? [닫은] (0) | 2019.02.12 |
[SPRING] @TestPropertySource가 Spring 1.2.6의 AnnotationConfigContextLoader를 사용하는 JUnit 테스트에서 작동하지 않습니다. (0) | 2019.02.12 |
[SPRING] String 값 ( '')을 역 직렬화 할 문자열 인수 생성자 / 팩토리 메소드 (0) | 2019.02.12 |