Spring integration 文件尾入站通道适配器stderr和stdout

Spring integration 文件尾入站通道适配器stderr和stdout,spring-integration,Spring Integration,我正在尝试使用spring集成创建一个尾部文件,它的工作方式与下面的代码相同,但我有两个问题 @Configuration public class RootConfiguration { @Bean(name = PollerMetadata.DEFAULT_POLLER) public PollerMetadata defaultPoller() { PollerMetadata pollerMetadata = new PollerMetadata();

我正在尝试使用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,读取标准,读取标准输出

我问这个问题是因为我要在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

注意:真正的代码是在创建新文件时监视文件夹,然后启动tail进程


进程监视器需要
waitFor()
进程-它不使用任何资源,只使用一点内存

实际处理由
tail
命令生成的数据需要
stdout
读取器

启动线程(在您的例子中,
taskExecutor-1
在完成启动其他线程的工作后退出)

目前没有禁用stderr读取器的选项,但是我们可以很容易地添加一个,这样在运行时只有2个线程


您可以随意打开一个,当然,.

进程监视器需要
waitFor()
进程-它不使用任何资源,只使用一点内存

实际处理由
tail
命令生成的数据需要
stdout
读取器

启动线程(在您的例子中,
taskExecutor-1
在完成启动其他线程的工作后退出)

目前没有禁用stderr读取器的选项,但是我们可以很容易地添加一个,这样在运行时只有2个线程


请随意打开一个,当然,.

在阅读OSDelegatingFileTailingMessageProducer的代码后,我发现需要stderror进程来检查文件移动或其他错误并将其作为事件发送,我看不到任何方法来禁用它,另外,对于从文件开始读取-n+0已经在这样做了在读取OSDelegatingFileTailingMessageProducer的代码后,我发现需要stderror进程来检查文件移动或其他错误并将其作为事件发送,我看不到任何方法来禁用它,另外,为了从文件开始读取,n+0已经在这样做了。感谢您的提示回答,我将尝试提供一个禁用stderr线程的选项。感谢您的提示回答,我将尝试提供一个禁用stderr线程的选项。