Я использую Spring Integration для чтения электронных писем из почтового ящика.
Как мне обработать исключение, если учетные данные почтового ящика неверны?
IntegrationFlow flow = IntegrationFlows
.from(Mail.imapIdleAdapter(imapUrl(mailbox))
.javaMailProperties(p -> p.put("mail.debug", mailbox.isDebug()))
)
.transform(Transformers.fromMail())
.handle(message -> {
sender.sendEmailToQueue(message);
})
.get();
Исключение:
java.lang.IllegalStateException: Failure in 'idle' task. Will resubmit.
at org.springframework.integration.mail.ImapIdleChannelAdapter$IdleTask.run(ImapIdleChannelAdapter.java:290) ~[spring-integration-mail-4.3.14.RELEASE.jar:4.3.14.RELEASE]
at org.springframework.integration.mail.ImapIdleChannelAdapter$ReceivingTask.run(ImapIdleChannelAdapter.java:241) ~[spring-integration-mail-4.3.14.RELEASE.jar:4.3.14.RELEASE]
at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54) [spring-context-4.3.14.RELEASE.jar:4.3.14.RELEASE]
at org.springframework.scheduling.concurrent.ReschedulingRunnable.run(ReschedulingRunnable.java:81) [spring-context-4.3.14.RELEASE.jar:4.3.14.RELEASE]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [na:1.8.0_101]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_101]
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) [na:1.8.0_101]
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) [na:1.8.0_101]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_101]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_101]
at java.lang.Thread.run(Thread.java:745) [na:1.8.0_101]
Caused by: com.sun.mail.util.MailConnectException: Couldn't connect to host, port: <HOST REMOVED***>, 993; timeout -1
at com.sun.mail.imap.IMAPStore.protocolConnect(IMAPStore.java:733) ~[javax.mail-1.5.6.jar:1.5.6]
at javax.mail.Service.connect(Service.java:366) ~[javax.mail-1.5.6.jar:1.5.6]
at javax.mail.Service.connect(Service.java:246) ~[javax.mail-1.5.6.jar:1.5.6]
at javax.mail.Service.connect(Service.java:195) ~[javax.mail-1.5.6.jar:1.5.6]
at org.springframework.integration.mail.AbstractMailReceiver.connectStoreIfNecessary(AbstractMailReceiver.java:286) ~[spring-integration-mail-4.3.14.RELEASE.jar:4.3.14.RELEASE]
at org.springframework.integration.mail.AbstractMailReceiver.openFolder(AbstractMailReceiver.java:293) ~[spring-integration-mail-4.3.14.RELEASE.jar:4.3.14.RELEASE]
at org.springframework.integration.mail.ImapMailReceiver.waitForNewMessages(ImapMailReceiver.java:158) ~[spring-integration-mail-4.3.14.RELEASE.jar:4.3.14.RELEASE]
at org.springframework.integration.mail.ImapIdleChannelAdapter$IdleTask.run(ImapIdleChannelAdapter.java:271) ~[spring-integration-mail-4.3.14.RELEASE.jar:4.3.14.RELEASE]
... 10 common frames omitted
Caused by: java.net.UnknownHostException: <HOST REMOVED***>
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:184) ~[na:1.8.0_101]
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172) ~[na:1.8.0_101]
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) ~[na:1.8.0_101]
at java.net.Socket.connect(Socket.java:589) ~[na:1.8.0_101]
at java.net.Socket.connect(Socket.java:538) ~[na:1.8.0_101]
at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:331) ~[javax.mail-1.5.6.jar:1.5.6]
at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:238) ~[javax.mail-1.5.6.jar:1.5.6]
at com.sun.mail.iap.Protocol.<init>(Protocol.java:123) ~[javax.mail-1.5.6.jar:1.5.6]
at com.sun.mail.imap.protocol.IMAPProtocol.<init>(IMAPProtocol.java:126) ~[javax.mail-1.5.6.jar:1.5.6]
at com.sun.mail.imap.IMAPStore.newIMAPProtocol(IMAPStore.java:756) ~[javax.mail-1.5.6.jar:1.5.6]
at com.sun.mail.imap.IMAPStore.protocolConnect(IMAPStore.java:691) ~[javax.mail-1.5.6.jar:1.5.6]
... 17 common frames omitted
Я смотрел на: https://docs.spring.io/spring-integration/reference/html/configuration.html#namespace-errorhandler
Код Spring Integration довольно обширный, и быть новичком в нем немного ошеломительно.
Любой совет будет принят с благодарностью.
Спасибо!