weblogic10.3.4 및 JMS 대기열이 메시지 수신자 코드이며 Spring JMS를 사용합니다. MessageProducer는 ClientAcknowledgeMode로 설정됩니다. 예외가 발생하면 메시지는 여전히 대기열 밖으로 이동하고 롤백을 반환합니다. 아래 코드는 잘못된 것입니까?weblogic JMS 대기열 메시지가 롤백되지 않는 예외
public class EmailListener implements MessageListener,ExceptionListener{
private EmailSend emailSend;
@SuppressWarnings("unchecked")
public void onMessage(Message message){
ObjectMessage om ;
try {
if(message instanceof ObjectMessage) {
om = (ObjectMessage)message;
emailSend.sendEmail((Map<String, String>)om.getObject());
//throw new JMSException("Test");
om.acknowledge();
}
}
catch(MailException me) {
logger.error("Mail server exception in sending email",me);
throw new RuntimeException(me);
}catch(JMSException jmse) {
logger.error("Error in sending email",jmse);
throw new RuntimeException(jmse);
}
}
public void setEmailSend(EmailSend emailSend){
this.emailSend = emailSend;
}
public void onException(JMSException jmse){
logger.error("Exception in sending email",jmse);
}
public void acknowledge(
) throws JMSException{
}
}
다음은 스프링 설정 당신은 조금을 명확히 할 필요가
<!--Spring JMS Message Listener Container -->
<bean id="jmsContainer"
class="org.springframework.jms.listener.DefaultMessageListenerContainer"
p:autoStartup="true" p:destination-ref="queue"
p:destinationResolver-ref="jmsDestinationResolver"
p:connectionFactory-ref="authenticationConnectionFactory"
p:exceptionListener-ref="emailListener"
p:messageListener-ref="emailListener" />