Ich habe Feder JMS Message Listener-Container-Setup wie folgt.Spring JMS-Fehlerhandler ist nicht aufrufen
<beans:bean id="messageListenerContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<beans:property name="connectionFactory" ref="amqConnectionFactory" />
<beans:property name="destination" ref="request.Queue" />
<beans:property name="messageListener" ref="messageListener" />
<beans:property name="sessionTransacted" value="true" />
<beans:property name="errorHandler" ref="inboundErrorHandler"/>
</beans:bean>
<beans:bean id="inboundErrorHandler" class="com.test.exception.MDPErrorHandler" />
Listener-Code ist wie folgt ..
@Component
public class MyMessageListener implements MessageListener {
private static final Log LOG = LogFactory.getLogger(MyMessageListener.class);
@Autowired
private MessageHandler handler;
/**
* @see MessageListener#onMessage(Message)
*/
@Override
public void onMessage(Message inMessage) {
try
{
if (inMessage instanceof TextMessage) {
TextMessage msg = (TextMessage) inMessage;
handler.processRequest(msg.getText());
} else {
LOG.error("Message of wrong type: " + inMessage.getClass().getName());
}
} catch (Exception cause) {
LOG.error("Error while receiving message in MlaMessageListener.onMesage() ",cause);
}
}
}
mein Fehler-Handler wie folgt ..
public class MDPErrorHandler implements ErrorHandler {
/**
* @see org.springframework.util.ErrorHandler#handleError(java.lang.Throwable)
*/
@Override
public void handleError(Throwable t) {
LOG.warn("Inside MDPErrorHandler.handleError()*** ");
t.printStackTrace();
}
}
Warum mein Fehler-Handler wird nicht automatisch im Falle einer Ausnahme Aufruf/Fehler tritt in messageListener.onMessage() auf?
Muss ich es manuell aufrufen?
Vielen Dank für Ihre Antwort. Aber die Lösung, die Sie vorschlagen, ist die Arbeit für die Integration des Frühlings, denke ich. Was ich nicht in meiner Bewerbung verwendet habe. Ich benutze nur einfache Feder jms. Keine Federintegration. – Arajit