我目前是 Spring Integration 的新手。
基本上尝试使用 Java Spring 集成 DSL 异步轮询多个文件位置。我需要获取文件名并使用文件名执行一些操作并将文件最终推送到 S3,我的问题是这些对文件执行操作的任务可以在任务执行器或服务激活器处理程序中执行。我不确定哪个是正确的地方。
@Autowired
private AWSFileManager awsFileManager;
@Bean
public IntegrationFlow inboundChannelFlow(@Value("${file.poller.delay}") long delay,
@Value("${file.poller.messages}") int maxMsgsPerPoll,
TaskExecutor taskExecutor, MessageSource<File> fileSource)
{
return IntegrationFlows.from(fileSource,
c -> c.poller(Pollers.fixedDelay(delay)
.taskExecutor(taskExecutor)
.maxMessagesPerPoll(maxMsgsPerPoll)))
.handle("AWSFileManager", "fileUpload")
.channel(ApplicationConfiguration.inboundChannel)
.get();
}
@Bean
TaskExecutor taskExecutor(@Value("${file.poller.thread.pool.size}") int poolSize) {
ThreadPoolTaskExecutor taskExecutor = new ThreadPoolTaskExecutor();
//Runnable task1 = () -> {this.methodsamp();};
taskExecutor.setCorePoolSize(poolSize);
//taskExecutor.execute(task1);
return taskExecutor;
}
@Async
public void methodsamp()
{
try
{
awsFileManager.fileUpload();
System.out.println("test");
}
catch(Exception ex)
{
}
我在这里附上了示例代码。
还有一种方法可以检索通道中文件的文件名,因为我需要将其作为参数传递给 fileUpload 方法。请指教。