ETL工具 etl-engine 能嵌入go語言進行開發的ETL產品

hw2499發表於2022-12-24

總體結構圖

第三方系統呼叫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實現嵌入指令碼

指令碼編寫規則

  • 根據對應標籤名稱去實現相應的介面,如上所述標籤名稱:

<BeforeOut/> 
<AfterOut/> 
<BeforeRun/>
  • 指令碼內包名稱格式固定

 package ext
  • 根據實際需要引入常用工具包

import (
"errors"
"fmt"
"strconv"
"time"
"github.com/tidwall/gjson"
"github.com/tidwall/sjson"
"etl-engine/etl/tool/extlibs/common"
 )
  • 實現對應的介面

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

4. 指令碼中呼叫公共變數

  common.GlobalVar.Vint = common.GlobalVar.Vint + 1
  fmt.Println("common.GlobalVar.Vint:",common.GlobalVar.Vint)


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70024931/viewspace-2929319/,如需轉載,請註明出處,否則將追究法律責任。

相關文章