1

DefaultMessageListenerContainer を使用して、キューからメッセージを読み取り、処理し、outbound-channel-adapter を使用して別のキューにポストするように message-driven-channel-adapter を構成しています。メッセージを送信キューにポストしているときに例外 (javax.jms.JMSException: メッセージが最大サイズを超えました) が発生した場合は、errorHandler (DefaultMessageListenerContainer のプロパティ) で処理し、受信者に通知したいと考えています。

errorHandler で例外スタック トレースを取得できますが、その例外の原因となったメッセージがわかりません。errorHandler で例外を引き起こしたメッセージ/ペイロードを取得する方法はありますか?

public class MyErrorHandler implements ErrorHandler {
public void handleError(Throwable t) {
        // Get the payload???
            // Log the exception
            // Notify the receiver
}

ありがとう!達人

4

2 に答える 2

2

次のコードが機能します

public class MyErrorHandler implements ErrorHandler {

   public void handleError(Throwable t) {

        if (throwable instanceof MessageHandlingException) {
            MessageHandlingException exception = (MessageHandlingException) throwable;
            if (exception != null) {
                Message<?> message = exception.getFailedMessage();
                payload = (String) message.getPayload();
            }
        }
   ...
}
于 2013-09-19T19:44:25.030 に答える