首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Nifi: nifi中的线程

Nifi: nifi中的线程
EN

Stack Overflow用户
提问于 2017-10-20 06:21:56
回答 1查看 2.9K关注 0票数 2

我想知道在nifi中线程是如何工作的,我的意思是一个处理器有一个线程,或者它们在一个主线程中?,也许我想从处理器获得一个文件,然后更新它。

  1. 除了使用processor =false操作之外,如何防止一次由多个处理器获取文件数据?
  2. 在执行脚本处理器代码中可以使用Thread.sleep吗?
  3. 是否可以通过groovy创建相同的逻辑?

我试过使用java文件锁,但它似乎不太好--这是我的代码,

代码语言:javascript
复制
     File file = new File("C://Users//user//Desktop//try2//nifi-
      1.3.0//4//conf2.xml");
        String content = "";
        String material = "";
        BufferedReader s;
        BufferedWriter w;
        int m;
        RandomAccessFile ini = new RandomAccessFile(file, "rwd");
        FileLock lock = ini.getChannel().lock();
        DocumentBuilder dBuilder;
        Document document, doc;
        String date="";
        String data="";
        boolean make = false;
        try {

            String sCurrentLine;
            s = new BufferedReader(Channels.newReader(ini.getChannel(), "UTF-8"));
            while ((sCurrentLine = s.readLine()) != null) {
                content += sCurrentLine;
            }
            ini.seek(0);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-20 09:41:29

我想知道在nifi中线程是如何工作的,我的意思是一个处理器有一个线程,还是它们在一个主线程中?

Nifi有一个可配置的线程池( ( sandwich menu -> controller settings -> general ) ),当任何处理器计划执行时,系统从池中获取空闲线程,在该线程中执行处理器,并将线程返回到线程池。因此,每个处理器在一个单独的随机线程中执行。

除了使用processor =false操作之外,如何防止一次由多个处理器获取文件数据?

您需要存储一个标志file XXX processed。你要怎么储存它-这是你的选择。例如,您可以创建一个具有相同名称但添加了扩展名:conf.xml -> conf.xml.done的空文件。在代码中,只需检查文件conf.xml.done是否存在,然后跳过conf.xml文件处理。

您可以将标志存储在数据库、缓存系统等中。

在执行脚本处理器代码中可以使用Thread.sleep吗?

有可能,但我看不出有什么意义。

是否可以通过groovy创建相同的逻辑?

您可以在groovy中完成任何事情:)

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46843397

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档