Spring集成-imap空闲接收器问题

问题描述 投票:0回答:1

我正在使用Spring Boot 2.2.4-RELEASE和Spring集成。我正在开发一个简单的ImapReceiver。

我需要以下内容:

  • 我可以配置多个Imap侦听器(我使用spring集成DSL)
  • 我收到MimeMessage
  • 我得到了所有信息和附件
  • 我将这些信息和附件放入数据库,露天场所

我写了以下代码

ImapIdleChannelAdapterSpec imapIdleChannelAdapterSpec = Mail.imapIdleAdapter(connectionUrl.toString())
                    .javaMailProperties(javaMailProperties)
                    .shouldDeleteMessages(deleteMessages)
                    .shouldMarkMessagesAsRead(markMessagesRead)
                    .autoStartup(true)
                    .autoCloseFolder(true)
                    .id(confMailIn.getHost() + "_adapter")
                    .selector(selectFunction);

            if (confMailIn.isRichiedeAutenticazione()) {
                imapIdleChannelAdapterSpec = imapIdleChannelAdapterSpec.javaMailAuthenticator(new CasellaPostaleAuthenticator(cpd.getIndirizzoMail(), cpd.getUsername(), cpd.getPassword()));
            }
            flow = IntegrationFlows
                    .from(imapIdleChannelAdapterSpec)
                    .handle(message ->{

                        publishMailEvent(message);
                    })
                    .get();

publishMailEvent方法提取所有必需的信息(例如TO,CC,BCC,邮件主题,附件),并生成一个自定义的spring异步事件。

现在,如果我离开autoCloseFolder(true),我将收到FolderClosedException,因此无法处理该消息。如果我设置autoCloseFolder(false) alll可以,但是我看到无休止的打印

2020-03-06 10:24:37,580 141381 [asyncTaskExecutor-18] DEBUG i.e.t.r.p.w.b.h.MailMessageHandler - Header name Message-ID header value <[email protected]> 
2020-03-06 10:24:37,582 141383 [asyncTaskExecutor-12] TRACE i.e.t.r.p.w.b.h.MailMessageHandler - Aggiungo allegato smime.p7s all'elenco di allegati 
2020-03-06 10:24:37,583 141384 [asyncTaskExecutor-18] TRACE i.e.t.r.p.w.b.h.MailMessageHandler - Aggiungo allegato smime.p7s all'elenco di allegati 
2020-03-06 10:24:37,583 141384 [asyncTaskExecutor-15] TRACE i.e.t.r.p.w.b.h.MailMessageHandler - Aggiungo allegato smime.p7s all'elenco di allegati 
2020-03-06 10:24:37,607 141408 [asyncTaskExecutor-18] TRACE i.e.t.r.p.w.b.s.i.GestioneMailSvcImpl - Mail out con id messaggio <[email protected]> esistente ? false 
2020-03-06 10:24:37,607 141408 [asyncTaskExecutor-12] TRACE i.e.t.r.p.w.b.s.i.GestioneMailSvcImpl - Mail out con id messaggio <[email protected]> esistente ? false 
2020-03-06 10:24:37,607 141408 [asyncTaskExecutor-15] TRACE i.e.t.r.p.w.b.s.i.GestioneMailSvcImpl - Mail out con id messaggio <[email protected]> esistente ? false 
2020-03-06 17:19:33,850 140094 [scheduling-1] INFO  o.s.i.mail.ImapMailReceiver - attempting to receive mail from folder [INBOX] 
2020-03-06 17:19:33,938 140182 [scheduling-1] INFO  o.s.i.mail.ImapMailReceiver - attempting to receive mail from folder [INBOX] 
2020-03-06 17:19:34,021 140265 [scheduling-1] INFO  o.s.i.mail.ImapMailReceiver - attempting to receive mail from folder [INBOX] 
2020-03-06 17:19:34,107 140351 [scheduling-1] INFO  o.s.i.mail.ImapMailReceiver - attempting to receive mail from folder [INBOX] 
2020-03-06 17:19:34,190 140434 [scheduling-1] INFO  o.s.i.mail.ImapMailReceiver - attempting to receive mail from folder [INBOX] 
2020-03-06 17:19:34,276 140520 [scheduling-1] INFO  o.s.i.mail.ImapMailReceiver - attempting to receive mail from folder [INBOX] 
2020-03-06 17:19:34,362 140606 [scheduling-1] INFO  o.s.i.mail.ImapMailReceiver - attempting to receive mail from folder [INBOX] 
2020-03-06 17:19:34,453 140697 [scheduling-1] INFO  o.s.i.mail.ImapMailReceiver - attempting to receive mail from folder [INBOX] 
2020-03-06 17:19:34,537 140781 [scheduling-1] INFO  o.s.i.mail.ImapMailReceiver - attempting to receive mail from folder [INBOX] 
2020-03-06 17:19:34,621 140865 [scheduling-1] INFO  o.s.i.mail.ImapMailReceiver - attempting to receive mail from folder [INBOX] 
2020-03-06 17:19:34,703 140947 [scheduling-1] INFO  o.s.i.mail.ImapMailReceiver - attempting to receive mail from folder [INBOX] 
2020-03-06 17:19:34,788 141032 [scheduling-1] INFO  o.s.i.mail.ImapMailReceiver - attempting to receive mail from folder [INBOX] 
2020-03-06 17:19:34,874 141118 [scheduling-1] INFO  o.s.i.mail.ImapMailReceiver - attempting to receive mail from folder [INBOX] 
2020-03-06 17:19:34,960 141204 [scheduling-1] INFO  o.s.i.mail.ImapMailReceiver - attempting to receive mail from folder [INBOX] 
2020-03-06 17:19:35,051 141295 [scheduling-1] INFO  o.s.i.mail.ImapMailReceiver - attempting to receive mail from folder [INBOX] 
2020-03-06 17:19:35,133 141377 [scheduling-1] INFO  o.s.i.mail.ImapMailReceiver - attempting to receive mail from folder [INBOX] 
2020-03-06 17:19:35,216 141460 [scheduling-1] INFO  o.s.i.mail.ImapMailReceiver - attempting to receive mail from folder [INBOX] 
2020-03-06 17:19:35,301 141545 [scheduling-1] INFO  o.s.i.mail.ImapMailReceiver - attempting to receive mail from folder [INBOX] 
2020-03-06 17:19:35,386 141630 [scheduling-1] INFO  o.s.i.mail.ImapMailReceiver - attempting to receive mail from folder [INBOX] 
2020-03-06 17:19:35,468 141712 [scheduling-1] INFO  o.s.i.mail.ImapMailReceiver - attempting to receive mail from folder [INBOX] 
2020-03-06 17:19:35,553 141797 [scheduling-1] INFO  o.s.i.mail.ImapMailReceiver - attempting to receive mail from folder [INBOX] 
2020-03-06 17:19:35,635 141879 [scheduling-1] INFO  o.s.i.mail.ImapMailReceiver - attempting to receive mail from folder [INBOX] 
2020-03-06 17:19:35,718 141962 [scheduling-1] INFO  o.s.i.mail.ImapMailReceiver - attempting to receive mail from folder [INBOX] 
2020-03-06 17:19:35,801 142045 [scheduling-1] INFO  o.s.i.mail.ImapMailReceiver - attempting to receive mail from folder [INBOX] 
2020-03-06 17:19:35,885 142129 [scheduling-1] INFO  o.s.i.mail.ImapMailReceiver - attempting to receive mail from folder [INBOX] 
2020-03-06 17:19:35,976 142220 [scheduling-1] INFO  o.s.i.mail.ImapMailReceiver - attempting to receive mail from folder [INBOX] 
2020-03-06 17:19:36,062 142306 [scheduling-1] INFO  o.s.i.mail.ImapMailReceiver - attempting to receive mail from folder [INBOX] 
2020-03-06 17:19:36,145 142389 [scheduling-1] INFO  o.s.i.mail.ImapMailReceiver - attempting to receive mail from folder [INBOX] 
2020-03-06 17:19:36,233 142477 [scheduling-1] INFO  o.s.i.mail.ImapMailReceiver - attempting to receive mail from folder [INBOX] 
2020-03-06 17:19:36,324 142568 [scheduling-1] INFO  o.s.i.mail.ImapMailReceiver - attempting to receive mail from folder [INBOX] 
2020-03-06 17:19:36,410 142654 [scheduling-1] INFO  o.s.i.mail.ImapMailReceiver - attempting to receive mail from folder [INBOX] 
2020-03-06 17:19:36,493 142737 [scheduling-1] INFO  o.s.i.mail.ImapMailReceiver - attempting to receive mail from folder [INBOX] 
2020-03-06 17:19:36,574 142818 [scheduling-1] INFO  o.s.i.mail.ImapMailReceiver - attempting to receive mail from folder [INBOX] 
2020-03-06 17:19:36,656 142900 [scheduling-1] INFO  o.s.i.mail.ImapMailReceiver - attempting to receive mail from folder [INBOX] 
2020-03-06 17:19:36,743 142987 [scheduling-1] INFO  o.s.i.mail.ImapMailReceiver - attempting to receive mail from folder [INBOX] 
2020-03-06 17:19:36,831 143075 [scheduling-1] INFO  o.s.i.mail.ImapMailReceiver - attempting to receive mail from folder [INBOX] 
2020-03-06 17:19:36,918 143162 [scheduling-1] INFO  o.s.i.mail.ImapMailReceiver - attempting to receive mail from folder [INBOX] 
2020-03-06 17:19:37,000 143244 [scheduling-1] INFO  o.s.i.mail.ImapMailReceiver - attempting to receive mail from folder [INBOX] 
2020-03-06 17:19:37,083 143327 [scheduling-1] INFO  o.s.i.mail.ImapMailReceiver - attempting to receive mail from folder [INBOX] 
2020-03-06 17:19:37,165 143409 [scheduling-1] INFO  o.s.i.mail.ImapMailReceiver - attempting to receive mail from folder [INBOX] 
2020-03-06 17:19:37,247 143491 [scheduling-1] INFO  o.s.i.mail.ImapMailReceiver - attempting to receive mail from folder [INBOX] 
2020-03-06 17:19:37,333 143577 [scheduling-1] INFO  o.s.i.mail.ImapMailReceiver - attempting to receive mail from folder [INBOX] 
2020-03-06 17:19:37,431 143675 [scheduling-1] INFO  o.s.i.mail.ImapMailReceiver - attempting to receive mail from folder [INBOX] 
2020-03-06 17:19:37,521 143765 [scheduling-1] INFO  o.s.i.mail.ImapMailReceiver - attempting to receive mail from folder [INBOX] 
2020-03-06 17:19:37,609 143853 [scheduling-1] INFO  o.s.i.mail.ImapMailReceiver - attempting to receive mail from folder [INBOX] 
2020-03-06 17:19:37,699 143943 [scheduling-1] INFO  o.s.i.mail.ImapMailReceiver - attempting to receive mail from folder [INBOX] 
2020-03-06 17:19:37,806 144050 [scheduling-1] INFO  o.s.i.mail.ImapMailReceiver - attempting to receive mail from folder [INBOX] 
2020-03-06 17:19:37,897 144141 [scheduling-1] INFO  o.s.i.mail.ImapMailReceiver - attempting to receive mail from folder [INBOX] 
2020-03-06 17:19:37,993 144237 [scheduling-1] INFO  o.s.i.mail.ImapMailReceiver - attempting to receive mail from folder [INBOX] 
2020-03-06 17:19:38,079 144323 [scheduling-1] INFO  o.s.i.mail.ImapMailReceiver - attempting to receive mail from folder [INBOX] 
2020-03-06 17:19:38,181 144425 [scheduling-1] INFO  o.s.i.mail.ImapMailReceiver - attempting to receive mail from folder [INBOX] 
2020-03-06 17:19:38,263 144507 [scheduling-1] INFO  o.s.i.mail.ImapMailReceiver - attempting to receive mail from folder [INBOX] 
2020-03-06 17:19:38,346 144590 [scheduling-1] INFO  o.s.i.mail.ImapMailReceiver - attempting to receive mail from folder [INBOX] 

此外,我无法确定何时关闭文件夹。我可以访问Closeable资源,但是什么时候应该关闭Folder?如果我在事件生成后立即关闭它,则在下一条消息上,我再次得到FolderClosedException。

有人可以给我一个提示,以了解处理我所需要的最佳方法吗?

谢谢

天使

spring spring-integration spring-integration-dsl
1个回答
0
投票
2020-03-06 17:19:33,938 140182 [scheduling-1] INFO  o.s.i.mail.ImapMailReceiver - attempting to receive mail from folder [INBOX] 
2020-03-06 17:19:34,021 140265 [scheduling-1] INFO  o.s.i.mail.ImapMailReceiver - attempting to receive mail from folder [INBOX] 

ImapIdleChannelAdapter的正常行为,因为它是事件驱动的组件,并且基于计划的任务。如果要控制轮询逻辑,请考虑切换到常规MailReceivingMessageSource-Mail.imapInboundAdapter()

您确实无法在每条消息后关闭文件夹。您应该在某个空闲时间段内执行此操作,此时一段时间内没有新消息,并且下游无任何处理。

© www.soinside.com 2019 - 2024. All rights reserved.