2
我正在使用Spring Integration 4.1.2。春季整合:SMTP服務器
在程序流程中,在流程結束時,我需要發送一封電子郵件。我正在使用以下:
<int:payload-type-router input-channel="response.in">
<int:mapping type="java.lang.String" channel="response.out"/>
<int:mapping type="org.springframework.mail.SimpleMailMessage" channel="mail.out"/>
</int:payload-type-router>
<mail:outbound-channel-adapter channel="mail.out" mail-sender="mailSender"/>
這工作正常。
我也想處理郵件服務器關閉的情況。
我試過以下解決方案,但它不起作用。
<int:chain input-channel="errorChannel" output-channel="emailErrorChannel">
<int:transformer ref="errorUnwrapper" />
</int:chain>
而解包:
@MessageEndpoint
public class ErrorUnwrapper {
@Transformer
public Message<?> transform(final ErrorMessage errorMessage) {
Message<?> failedMessage = ((MessagingException) errorMessage.getPayload()).getFailedMessage();
return failedMessage;
}
}
但是,這是行不通的。我想捕捉異常並向用戶發送有意義的響應而不是堆棧跟蹤。我希望在Spring Integration中做到這一點。否則,我將不得不使用服務激活器而不是SI mail
擴展來編寫Java郵件服務調用。
或者它是單向組件嗎?我剛剛發現這個blog的帖子也是這樣做的。我也讀過this,但沒有得到。
非常感謝。你指出我的解決方案。我將errorChannel添加到http:入站網關,並解決了問題。 – adi