当前位置: 首页 > news >正文

NIFI的处理器:ExecuteGroovyScript 2.4.0

ExecuteGroovyScript是常用的处理器之一,用于执行GroovyScript脚本。该脚本负责处理传入的流文件(例如传输到SUCCESS或删除)以及由该脚本创建的任何流文件。如果处理不完整或不正确,会话将被回滚。

属性值-失败处理策略 Failure strategy:如何处理未处理的异常。如果你想通过代码管理异常,那么保留默认值“rollback”。如果选择了“转移到失败”并且发生了未处理的异常,则此会话中从传入队列接收到的所有flowFiles都将转移到“失败”关系,并设置了其他属性:ERROR_MESSAGE和ERROR_STACKTRACE。如果选择了“回滚”并且发生了未处理的异常,则从传入队列接收到的所有flowFiles都将受到惩罚并返回。如果处理器没有传入连接,则此参数无效。

该脚本的性能大约是java语言的10%,性能不高,调试效率也很低,但是编写灵活,使用方便。

如下为部分代码示例:

import groovy.json.JsonSlurper
import groovy.json.JsonBuilder

// 解析输入 JSON
def flowFile = session.get();
if(!flowFile) return;
def jsonText = flowFile.read().getText('UTF-8');
def inputJson = new JsonSlurper().parseText(jsonText);

// 获取 timestamp
def timestamp = inputJson.timestamp

// 创建输出数组
def outputList = []

// 遍历 plc1 和 plc2,并提取每个设备的数据
inputJson.each { key, value ->
    if (!key.equalsIgnoreCase("ct_timestamp")) {
        // 克隆原始的 plc 数据
        def deviceData = value.collectEntries { k, v -> [(k): v] }

        // 创建输出数据结构
        def outputData = [
            data: deviceData,
            device_name: key,
            data_time: ct_timestamp
        ]

        // 将转换后的数据添加到输出列表
        outputList.add(outputData)
    }
}

// 返回输出 JSON
def outputJson = new JsonBuilder(outputList).toPrettyString()
flowFile=session.write(flowFile, {outputStream ->outputStream.write(
        outputJson.bytes
) } as OutputStreamCallback);
REL_SUCCESS << flowFile;

http://www.dtcms.com/a/204495.html

相关文章:

  • C# AI(Trae工具+claude3.5-sonnet) 写前后端
  • A1-A2 英语学习系列 第五集
  • Java枚举详解
  • 抽象:C++命名作用域与函数调用
  • IO pin的transition约束从哪来?
  • 高级认知型Agent
  • dedecms织梦全局变量调用方法总结
  • 如何在电脑上登录多个抖音账号?多开不同IP技巧分解
  • 广东省省考备考(第十六天5.21)—言语:语句排序题(听课后强化)
  • React中 lazy与 Suspense懒加载的组件
  • git合并多次commit提交
  • CentOS:搭建国内软件repository,以实现自动yum网络安装
  • JUC高并发编程
  • 自动化软件如何确保高可用性和容错性?
  • 云蝠智能大模型呼叫动态情感共情能力上线!
  • 大语言模型 17 - MCP Model Context Protocol 介绍对比分析 基本环境配置
  • 双活数据中心解决方案
  • 如何在Java中处理PDF文档(教程)
  • :-1: error: msvc-version.conf loaded but QMAKE_MSC_VER isn‘t set错误原因及解决方法
  • WSD3043 MOSFET 在吸黑头仪中的应用
  • #Redis缓存篇#(七)分布式缓存
  • 基于大模型的全面惊厥性癫痫持续状态技术方案
  • 1.4 C++之运算符与表达式
  • 分类算法 Kmeans、KNN、Meanshift 实战
  • 从 0 到 1:用 Trae 插件 Builder 模式开发端午包粽子小游戏
  • 权限控制相关实现
  • 基于Flink的数据中台管理平台
  • 制作一款打飞机游戏53:子弹样式
  • 破解充电安全难题:智能终端的多重防护体系构建
  • Token类型与用途详解:数字身份的安全载体图谱