我有一个Spring输入通道,定义如下
<file:inbound-channel-adapter prevent-duplicates="false" id="inpChannel" directory="file:/Users/abhisheksingh/req" auto-startup="true">
<int:poller id="poller" fixed-delay="1000" />
</file:inbound-channel-adapter>
<int:service-activator input-channel="inpChannel" ref="inpHandler" />
文件名示例为test.sqq。SQQ是客户端用于将文件放在FTP中的文件格式。但是,我看到spring ftp适配器一次又一次地使用不同的文件名获取相同的文件。所以第一次是test.sqq。然后下一次是test.sqq-20170204.pqq,然后下一次是test.sqq-20170204.pqq.20170304.pqq。这种情况还在继续。我在我的一端有一个过滤器,它检查已经处理的文件的名称。但是,由于每次轮询的文件名不同,所有这些文件都被选中进行处理。
这是我的ftp适配器-
<int-ftp:inbound-channel-adapter id="sqqFtpInbound"
channel="ftpChannel"
session-factory="sqqFtpClientFactory"
auto-create-local-directory="true"
delete-remote-files="false"
local-filter="acceptAllFileListFilter"
local-directory="file:/Users/abhisheksingh/ddrive/everge_ws/sqqReq" auto-startup="true" >
<int:poller id="poller" fixed-delay="1000" />
</int-ftp:inbound-channel-adapter>
我不明白为什么同一个文件被一次又一次地拿起。我会感谢你的帮助!
这是我的文件列表筛选器代码。
public class TestFileListFilter<F> extends AbstractFileListFilter<F> {
private static final Logger log = LoggerFactory.getLogger(EvergeFileListFilter.class);
@Override
protected boolean accept(F file) {
File f = (File) file;
if(f.getAbsolutePath().contains(".PQQ")) {
String newDir = "/Users/abhisheksingh/ddrive/sample/pqqReq/";
String archiveLocation = "/Users/abhisheksingh/ddrive/sample/pqqArchive/";
String fullName = archiveLocation + f.getName();
log.info("Check if the file has already been processed " + fullName);
File fl = new File(fullName);
final File dir = new File(archiveLocation);
for (final File child : dir.listFiles()) {
String archiveName = FilenameUtils.getBaseName(child.getName());
String inputName = FilenameUtils.getBaseName(fl.getName());
log.info("Archive file name is " + archiveName);
log.info("Input file name is " + inputName);
if(inputName.contains(archiveName)) {
log.info("The file is already processed "+inputName);
}
}
if(fl.exists()) {
log.error("PQQ file has already been processed.");
removeFile(f);
return false;
}else{
log.info("PQQ File received " + f.getAbsolutePath());
}
moveFile(f, newDir);
return true;
}
}
我认为您的自定义local-filter
存在一些漏洞,可以依赖不存在的事实来等待来自远程存储的唯一文件。
您应该确保该功能,因为它在默认情况下是不切换的。
为此,考虑将filter
选项添加到
作为对acceptoncefilelistfilter
或ftpppersistentacceptoncefilelistfilter
的引用。
我们在这件事上有一个JIRA。
请确认这正是您的问题,我们可能会修改该票的优先级,并将很快修复它。
问题内容: 我正在尝试仅将原始文件从一个目录复制到另一个目录,但是某些文件具有相同的名称…我正在尝试使用哈希来比较文件,如果其不在目录中发送并且名称相同,它到file_name.something。目前,我正在获取一些文件,并且具有相同名称的文件正在被覆盖…任何人都可以提出建议吗? 问题答案: 您将哈希与文件名进行比较。你需要类似的东西 计算目标文件夹中每个文件的哈希值。 此外,在当前版本中,您的
我对高级Java和可重入锁的学习相当陌生。我知道ReentrantLock有一个公平性参数,它确保将锁提供给最缺线程(与同步的内部锁不同) 但是,Reentrant也意味着同一线程可以通过递增holdcount来一次又一次地重新获取锁。如果同一个线程一直获得锁,它如何保证公平性?
在Spring IOC中,bean的两个定义(具有相同的名称和类)是否有效? 我有两个bean定义文件包含在web中。xml。参见下面的示例。 应用Context-beans1.xml applicationContext-beans2。xml 到目前为止,我还没有遇到任何问题。但是,这可能会影响到多线程和集群的现实环境吗? 注意:这两个XMLs都被加载,因为我可以使用在这两个XMLs中定义的其他
您好,我想平稳地更新seekbar,每秒钟更新一次,所以我创建了一个使用计时器的方法,每秒钟更新seekbar,但它每秒钟都在更新歌曲,我到处搜索,但没有找到解决方案,我不想使用任何处理程序,我想用这个方法修复 在这里我实现了歌曲开始时的方法 这是我的全部代码
问题内容: 我正在做一个大项目,该项目很可能最终包含成千上万行代码,对于当前结构,我喜欢这样: 这样做的问题是controllers和models目录包含很多文件,全部使用和。因此,我正在考虑将其拆分为: 凡在控制器包的用户文件中可能包含的文件,等等。 现在,我读到像或那样的软件包是不好的做法,但是我担心对这两个软件包进行命名可能不是一个好主意,因为它们是同一项目的一部分(即使它们位于不同的目录中
我有一个PDF文档,其中包含多个同名文本字段。 我想设置一次值()和每次出现该字段的值。这些字段可能在同一页或不同页(显然是同一文档)中。 当只有一个这样的字段时,可以生成PDF。如果有多个字段,则所有字段均显示为空。如果我禁用展平,我可以在每个字段中看到文本(尽管只有在单击字段后-奇怪…)。 这里是测试PDF。 编辑: 这个问题似乎只有在我设置字段的字体时才会发生。您可以使用此字体和以下代码进行