ProblèmeSpring Integration Pop3MailReceiver arrête silencieusement polling sans vous connecter pourquoi
J'ai une configuration très basique pour une configuration de l'adaptateur de messagerie d'intégration de printemps (ci-dessous est l'échantillon concerné):
<int:channel id="emailChannel">
<int:interceptors>
<int:wire-tap channel="logger"/>
</int:interceptors>
</int:channel>
<mail:inbound-channel-adapter id="popChannel"
store-uri="pop3://user:[email protected]/INBOX"
channel="emailChannel"
should-delete-messages="true"
auto-startup="true">
<int:poller max-messages-per-poll="1" fixed-rate="30000"/>
</mail:inbound-channel-adapter>
<int:logging-channel-adapter id="logger" level="DEBUG"/>
<int:service-activator input-channel="emailChannel" ref="mailResultsProcessor" method="onMessage" />
Cela fonctionne bien la majorité du temps et je peux voir les journaux montrant l'interrogation (et cela fonctionne bien accrocher dans mon mailResultsProcessor quand un mail est là):
2013-08-13 08:19:29,748 [task-scheduler-3] DEBUG org.springframework.integration.mail.Pop3MailReceiver - opening folder [pop3://user:[email protected]/INBOX]
2013-08-13 08:19:29,796 [task-scheduler-3] INFO org.springframework.integration.mail.Pop3MailReceiver - attempting to receive mail from folder [INBOX]
2013-08-13 08:19:29,796 [task-scheduler-3] DEBUG org.springframework.integration.mail.Pop3MailReceiver - found 0 new messages
2013-08-13 08:19:29,796 [task-scheduler-3] DEBUG org.springframework.integration.mail.Pop3MailReceiver - Received 0 messages
2013-08-13 08:19:29,893 [task-scheduler-3] DEBUG org.springframework.integration.endpoint.SourcePollingChannelAdapter - Received no Message during the poll, returning 'false'
Le problème que j'ai est que l'interrogation s'arrête pendant la journée, sans indication dans les journaux pourquoi il a cessé de fonctionner. La seule raison pour laquelle je peux dire est que le débogage ci-dessus n'est pas présent dans les journaux et que les E-Mails se construisent sur le compte E-Mail.
Questions
- Quelqu'un at-il vu cela avant et de savoir comment le résoudre?
- Y a-t-il une modification que je peux apporter à ma configuration pour capturer le problème dans le journal? Je pensais que l'adaptateur de canal de journalisation réglé au débogage aurait ce couvert.
En utilisant la version 2.2.3.RELEASE de Spring Integration sur Tomcat 7, consignation la sortie par défaut catalina.out. Déployé sur une instance AWS standard tomcat 7.
Cela s'est-il avéré être un problème dans votre code ou au printemps? – Jason
@Jason c'est difficile à dire. Ce qui semblait être quand le thread faisait la connexion s'il rencontrait un problème il y aurait un échec silencieux et ce thread serait tué/suspendu/suspendu. Passer à l'utilisation d'une approche basée sur un pool a résolu le problème, car les pools suppriment généralement les threads disparus, etc. Mon point de vue est un thread ne devrait pas échouer/se bloquer comme il le faisait silencieusement, mais j'aurais probablement dû utiliser un pool. Je posterai la config mise à jour ci-dessous. – Jim