我遇到了Mule ESB独立FTP轮询的问题: 应用程序运行几天没有问题,然后FTP轮询停止,没有发出警告或错误。Mule FTP轮询停止没有错误或警告
日志显示FTP轮询的活动迹象,直到它停止。之后什么都没有,但其他连接器仍然处于活动状态(主要是SFTP轮询)。我在运行时启用了DEBUG日志,以查看是否仍有活动,并且相应的连接器线程完全保持沉默状态,就好像停止或阻止一样。
最后,重新启动应用程序暂时解决了这个问题,但我想了解为什么发生这种情况以避免再次面对它。我怀疑FTP连接器线程是停止还是被阻止,阻止进一步的民意调查。
它可能是由于我们用来防止poll(覆盖postProcess()函数)后文件删除的扩展FtpMessageReceiver引起的。然而,看看这个组件和基本的FTP接收器和连接器的源代码,我不明白它是如何发生的。
任何想法为什么民意调查会突然停止而不会引发错误?
这是当前连接器的配置:
<ftp:connector name="nonDeletingFtpConnector" doc:name="FTP"
pollingFrequency="${frequency}"
validateConnections="true">
<reconnect frequency="${frequency}" count="${count}"/>
<service-overrides messageReceiver="my.comp.NonDeletingFtpMessageReceiver" />
</ftp:connector>
以及相应的端点:
<ftp:inbound-endpoint host="${ftp.source.host}"
port="${ftp.source.port}"
path="${ftp.source.path}"
user="${ftp.source.login}"
responseTimeout="10000"
password="${ftp.source.password}"
connector-ref="archivingFtpConnector"
pollingFrequency="${ftp.default.polling.frequency}">
<file:filename-wildcard-filter pattern="*.zip"/>
</ftp:inbound-endpoint>
的的messageReceiver代码:
public class NonDeletingFtpMessageReceiver extends FtpMessageReceiver {
public NonDeletingFtpMessageReceiver(Connector connector, FlowConstruct flowConstruct, InboundEndpoint endpoint, long frequency) throws CreateException {
super(connector, flowConstruct, endpoint, frequency);
}
@Override
protected void postProcess(FTPClient client, FTPFile file, MuleMessage message) throws Exception {
//do nothing
}
}
正如你可以看到我们定义了一个FtpMessageReceiver到避免在轮询时删除文件(这是在流程中进一步完成的),但是正在查看代码我看不到如何跳过super.postProcess()调用(它负责删除文件)可能会导致问题。
FtpMessageReceiver源代码,我看了: https://github.com/mulesoft/mule/blob/mule-3.5.0/transports/ftp/src/main/java/org/mule/transport/ftp/FtpMessageReceiver.java
技术配置:
- 骡子独立3.5.0
- 的Ubuntu 14.04.2 LTS
- 的Java OpenJDK的运行时环境(2.5的IcedTea。 6)(7u79-2.5.6-0ubuntu1.14.04.1)
任何帮助,将不胜感激。感谢提前!
我们在我们的应用程序中几次遇到这个问题,在日志文件中没有错误,并且不知道发生了什么。最终导致应用程序重新启动。我更喜欢在线程阻塞或等待FTP连接时检查FTP服务器中是否存在任何问题。 – RamakrishnaN
干得好,我检查了与netstat挂起的FTP连接,并且有几个连接打开了几天仍然打开。使用jstack我能够跟踪伪代码并用自定义FtpConnectionFactory编写解决方法; (我创建了另一个帖子,因为这与Apache Commons Net FTP Client更相关) –
[link](https://stackoverflow.com/questions/33350649/commons-net-ftpclient-hangs-indefinitely-with-mule)to Pierre B.的另一篇文章。 – Anssssss