etl不仅仅是一个数据交换工具

13 篇文章 0 订阅
12 篇文章 0 订阅

总体结构

etl-engine不仅是一个数据交换工具,它还可以充当你的开发工具,通过部署etl-engine并在其中嵌入go脚本,你可以去实现大部分数据层面的开发,当然什么都要有个度,适度就好。
etl-engine

第三方系统调用etl-engine

  1. etl-crontab暴露Http/Https API接口

    第三方系统可通过Http/Https方式调用上述接口运行etl-engine
  2. etl-engine运行HttpInput节点实现阻塞模式

    第三方系统可通过Http/Https方式向etl-engine提交数据
  3. etl-engine运行MQ消费者节点实现阻塞模式

    第三方系统可通过MQ生产者向etl-engine发送消息数据

etl-engine实现嵌入脚本

节点类型节点描述标签名称接口格式说明
Node输出节点BeforeOutfunc RunScript(dataValue string) (result string, topErr error) {}数据写操作之前,可进行数据转换或其它操作
Node输出节点AfterOutfunc RunScript(dataValue string) (result string, topErr error) {}数据写操作之后,可进行其它操作
Node转换节点BeforeOutfunc RunScript(dataValue string) (result string, topErr error) {}数据输出之前,可进行数据转换或其它操作。
NodeCUSTOM_READER_WRITER节点AfterOutfunc RunScript() (result string, topErr error) {}属于独立的一个自定义节点,只能输出到垃圾桶节点,此标签内可进行其它操作。
Line线节点BeforeRunfunc RunScript() (result bool, topErr error) {}进行流程执行之前的判断工作,返回true就可以向下执行,返回false就退出向下执行。

脚本编写规则

  1. 根据对应标签名称去实现相应的接口,如上所述标签名称:
<BeforeOut/> 
<AfterOut/> 
<BeforeRun/>
  1. 脚本内包名称格式固定
 package ext 
  1. 根据实际需要引入常用工具包
  import (
	"errors"
	"fmt"
	"strconv"
	"time"
	"github.com/tidwall/gjson"
	"github.com/tidwall/sjson"
	"etl-engine/etl/tool/extlibs/common"
 )
  1. 实现对应的接口
func RunScript() (result bool, topErr error) {
		
  		 fmt.Println("common.GlobalVar.Vint:",common.GlobalVar.Vint)
		 if ( common.GlobalVar.Vint < 8 ){
                        fmt.Println("返回false")
			return false,nil
		 }else{
		        fmt.Println("返回true")
		        return true,nil
		 }
	 
}

公共变量

  1. 公共变量的生命周期作用于每个etl-engine任务运行开始到运行结束之间。
  2. 引入包 “etl-engine/etl/tool/extlibs/common”
  3. 该包所提供的公共变量
    • GlobalVar
      Vint      int64
      Vbool     bool
      Vstring   string
      Vfloat    float64
      Vmap      map[string]string
      Vinteface interface{}
      ViArray   []int64
      VsArray   []string
      VbArray   []bool
      VfArray   []float64
  1. 脚本中调用公共变量
  common.GlobalVar.Vint = common.GlobalVar.Vint + 1
  fmt.Println("common.GlobalVar.Vint:",common.GlobalVar.Vint)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值