我正在尝试使用spring集成的尾文件,它正如下面的代码一样工作,但我有两个问题
@Configuration
public class RootConfiguration {
@Bean(name = PollerMetadata.DEFAULT_POLLER)
public PollerMetadata defaultPoller() {
PollerMetadata pollerMetadata = new PollerMetadata();
pollerMetadata.setTrigger(new PeriodicTrigger(10));
return pollerMetadata;
}
@Bean
public MessageChannel input() {
return new QueueChannel(50);
}
@Bean
public FileTailInboundChannelAdapterFactoryBean tailInboundChannelAdapterParser() {
FileTailInboundChannelAdapterFactoryBean x = new FileTailInboundChannelAdapterFactoryBean();
x.setAutoStartup(true);
x.setOutputChannel(input());
x.setTaskExecutor(taskExecutor());
x.setNativeOptions("-F -n +0");
x.setFile(new File("/home/shahbour/Desktop/file.txt"));
return x;
}
@Bean
@ServiceActivator(inputChannel = "input")
public LoggingHandler loggingHandler() {
return new LoggingHandler("info");
}
@Bean
public TaskExecutor taskExecutor() {
ThreadPoolTaskExecutor taskExecutor = new ThreadPoolTaskExecutor();
taskExecutor.setCorePoolSize(4);
taskExecutor.afterPropertiesSet();
return taskExecutor;
}
}
每个日志下面我有4个线程用于拖尾文件。我需要所有这些还是我可以禁用一些。为什么我有监控进程java.lang.UNIXProcess@b37e761,阅读stderr,阅读stdout 的主题。
我问这个是因为我要在voip开关上运行程序,我想尽量使用最少的资源。
2016-12-10 13:22:55.666 INFO 14862 --- [ taskExecutor-1] t.OSDelegatingFileTailingMessageProducer : Starting tail process
2016-12-10 13:22:55.665 INFO 14862 --- [ main] t.OSDelegatingFileTailingMessageProducer : started tailInboundChannelAdapterParser
2016-12-10 13:22:55.682 INFO 14862 --- [ main] o.s.i.endpoint.PollingConsumer : started rootConfiguration.loggingHandler.serviceActivator
2016-12-10 13:22:55.682 INFO 14862 --- [ main] o.s.c.support.DefaultLifecycleProcessor : Starting beans in phase 2147483647
2016-12-10 13:22:55.701 INFO 14862 --- [ main] c.t.SonusbrokerApplication : Started SonusbrokerApplication in 3.84 seconds (JVM running for 4.687)
2016-12-10 13:22:55.703 DEBUG 14862 --- [ taskExecutor-2] t.OSDelegatingFileTailingMessageProducer : Monitoring process java.lang.UNIXProcess@b37e761
2016-12-10 13:22:55.711 DEBUG 14862 --- [ taskExecutor-3] t.OSDelegatingFileTailingMessageProducer : Reading stderr
2016-12-10 13:22:55.711 DEBUG 14862 --- [ taskExecutor-4] t.OSDelegatingFileTailingMessageProducer : Reading stdout
我的第二个问题是,是否有可能从乞讨开始阅读文件并继续尾巴,我正在考虑使用本机选项-n 1000
注意:实际代码将在创建新文件时监控文件夹,然后启动尾部流程
答案 0 :(得分:0)
进程监视器需要waitFor()
进程 - 除了一点内存外,它不会使用任何资源。
stdout
读者需要实际处理tail
命令生成的数据。
起始线程(在你的情况下taskExecutor-1
在完成启动其他线程的工作后退出)。
目前没有禁用stderr
阅读器的选项,但我们很容易添加一个,因此在运行时只有2个线程。