2012-02-02 3 views
0

나는 Spring-hibernate-activeMq를 사용하여 프로젝트를 코딩했다.활성 mq ExceptionListener를 만드는 방법은 무엇입니까?

내가 알고 싶은 것은 내가 아래에서 설명한 것처럼 activeMq를 구성했다면 어떻게 예외 리스너 클래스를 구현해야 하는가? 나는 네가 잘 이해하지 못한다는 것을 알고 있지만, 아래의 나의 샘플을 한번 보아라.

예외 리스너를 올바르게 구현했는지 알려주세요. 그렇지 않다면 어떻게해야하는지 예를 들어주십시오. 미리 감사드립니다.

응용 프로그램 컨텍스트 : (나는 노력하고 있습니다 :

<bean id="connectionFactory" 
     class="org.springframework.jms.connection.CachingConnectionFactory" 
     depends-on="broker"> 
    <constructor-arg ref="amqConnectionFactory"/> 
    <property name="reconnectOnException" value="true"/> 
    <property name="exceptionListener" ref="jmsExceptionListener"/> 
    <property name="sessionCacheSize" value="100"/> 
</bean> 

JMS 예외 리스너 클래스 (필자는 한 ConnectionFactory에의 재산을 제외하고 예외 청취자에 대한 빈을 선언하지 않았다 주) ConnectionFactory를 삽입하려면 가능한지 아닌지 확실하지 않습니다. 그리고 마지막으로 생성자 인수를 확인하십시오. 확실하지 않습니다 ..)

@Component("jmsExceptionListener") 
public class JMSExceptionListener implements ExceptionListener { 

private final static Logger logger = LoggerFactory.getLogger(JMSExceptionListener.class); 

@Autowired 
private CachingConnectionFactory connection; 

// private Connection connection = null; 

private ExceptionListener exceptionListener = null; 

public JMSExceptionListener() { 
} 

public JMSExceptionListener(CachingConnectionFactory connection, ExceptionListener exceptionListener) { 
    super(); 
    this.connection = connection; 
    this.exceptionListener = exceptionListener; 
} 

public void onException(JMSException arg0) { 
    logger.error("JMS exception has occured.. ", arg0); 

    if(connection != null){ 
     connection.onException(arg0); 
    } 
    if (exceptionListener != null) { 
     exceptionListener.onException(arg0); 
    } 
} 
} 

답변

0

public class JmsExceptionListener implements ExceptionListener { 
private final static Logger logger = LoggerFactory.getLogger(JmsExceptionListener.class); 

@Autowired 
private MailService mailService; 

private ExceptionListener exceptionListener = null; 

private CachingConnectionFactory cachingConnectionFactory; 

public JmsExceptionListener() { 
} 

public JmsExceptionListener(Connection connection, ExceptionListener exceptionListener) { 
    super(); 
    this.exceptionListener = exceptionListener; 
} 

public synchronized void onException(JMSException e) { 
    logger.error("JMS exception has occurred: ", e); 
    sendErrorNotificationMail(e); 

    Exception ex = e.getLinkedException(); 
    if (ex != null) { 
     logger.error("JMS Linked exception: ", ex); 
    } 

    if (exceptionListener != null) { 
     exceptionListener.onException(e); 
    } 
} 

public CachingConnectionFactory getCachingConnectionFactory() { 
    return cachingConnectionFactory; 
} 

public void setCachingConnectionFactory(CachingConnectionFactory cachingConnectionFactory) { 
    this.cachingConnectionFactory = cachingConnectionFactory; 
} 

private void sendErrorNotificationMail(Exception e) { 
    try { 
     mailService.sendJmsExceptionMail(e, ErrorMessageAccessor.get("core.jms.unexpected")); 
    } catch (ElekBusinessException e1) { 
     logger.error(ErrorMessageAccessor.get("generic.mailService.exp"), e); 
    } 
} 

}

: 다음과 같은

내가 조작 한 exceptionListener로 클래스

관련 문제