使用Lua腳本可以實現更復雜的數據處理邏輯,go-mysql-transfer支持Lua5.1語法
# **示例**
t_user表,數據如下:

## **示例一**
Lua腳本:
```
local json = require("json") -- 加載json模塊
local ops = require("mqOps") --加載mq操作模塊
local row = ops.rawRow() --當前數據庫的一行數據,table類型,key為列名稱
local action = ops.rawAction() --當前數據庫事件,包括:insert、updare、delete
local id = row["ID"] --獲取ID列的值
local userName = row["USER_NAME"] --獲取USER_NAME列的值
local password = row["PASSWORD"] --獲取USER_NAME列的值
local createTime = row["CREATE_TIME"] --獲取CREATE_TIME列的值
local result = {} -- 定義一個table,作為結果
result["id"] = id
result["action"] = action
if action == "delete" -- 刪除事件
then
local val = json.encode(result) -- 將result轉為json
ops.SEND("user_topic",val) -- 發送消息,第一個參數為topic(string類型),第二個參數為消息內容
else
result["userName"] = userName
result["password"] = password
result["createTime"] = createTime
result["source"] = "binlog" -- 數據來源
local val = json.encode(result) -- 將result轉為json
ops.SEND("user_topic",val) -- 發送消息,第一個參數為topic(string類型),第二個參數為消息內容
end
```
引入Lua腳本:
```
rule:
-
schema: eseap #數據庫名稱
table: t_user #表名稱
lua_file_path: lua/t_user_kafka.lua #lua腳本文件
```
insert事件,同步到Kafka的數據如下:

update事件,同步到Kafka的數據如下:

delete事件,同步到Kafka的數據如下:

## **示例二**
Lua腳本:
```
local ops = require("mqOps") --加載mq操作模塊
local row = ops.rawRow() --當前數據庫的一行數據,table類型,key為列名稱
local action = ops.rawAction() --當前數據庫事件,包括:insert、updare、delete
local userName = row["USER_NAME"] --獲取USER_NAME列的值
if action == "insert" then -- 只監聽添加事件
local str = string.format("恭喜您:%s 注冊成功",userName)
ops.SEND("user_topic",str) -- 發送消息,第一個參數為topic(string類型),第二個參數為消息內容
end
```
同步到Kafka的數據如下:

# **mqOps模塊**
提供的方法如下:
1. SEND: 發送操作,如:ops.SEND(topic,result)。參數topic為字符串類型;參數result為要發送的消息
- 簡介
- 部署運行
- 高可用集群
- 同步數據到Redis
- Redis配置
- 基于規則同步
- 基于Lua腳本同步
- 同步數據到MongoDB
- MongoDB配置
- 基于規則同步
- 基于Lua腳本同步
- 同步數據到RocketMQ
- RocketMQ配置
- 基于規則同步
- 基于Lua腳本同步
- 同步數據到Kafka
- Kafka配置
- 基于規則同步
- 基于Lua腳本同步
- 同步數據到RabbitMQ
- RabbitMQ配置
- 基于規則同步
- 基于Lua腳本同步
- 同步數據到Elasticsearch
- Elasticsearch配置
- 基于規則同步
- 基于Lua腳本同步
- 全量數據導入
- Lua腳本
- 基礎模塊
- Json模塊
- HttpClient模塊
- DBClient模塊
- 監控
- 性能測試
- 常見問題
- 更新記錄開發計劃