| |
Flash 是一款轻量级的 Go 语言库,它利用事件管理机制,实现了对 PostgreSQL 数据库变化的实时监控。开发者可以通过 Flash 轻松地监听数据库中特定表的变化,并在变化发生时执行自定义的回调函数。
Flash 提供了丰富的功能来满足各种实时数据处理需求,其核心功能包括:
使用 Flash 非常简单,以下是一个基本的示例:
package main
import (
"fmt"
"github.com/quix-labs/flash/pkg/listeners"
"os"
"os/signal"
"github.com/quix-labs/flash/pkg/client"
"github.com/quix-labs/flash/pkg/types"
)
func main() {
// 配置监听器,监听 public.posts 表
postsListenerConfig := &types.ListenerConfig{Table: "public.posts"}
postsListener := listeners.NewListener(postsListenerConfig)
// 设置事件回调函数
postsListener.On(types.OperationAll, func(event types.Event) {
switch typedEvent := event.(type) {
case *types.InsertEvent:
fmt.Printf("insert - new: %+v\n", typedEvent.New)
case *types.UpdateEvent:
fmt.Printf("update - old: %+v - new: %+v\n", typedEvent.Old, typedEvent.New)
case *types.DeleteEvent:
fmt.Printf("delete - old: %+v \n", typedEvent.Old)
case *types.TruncateEvent:
fmt.Printf("truncate \n")
}
})
// 创建客户端并连接数据库
clientConfig := &types.ClientConfig{DatabaseCnx: "postgresql://user:password@host:port/database"}
flashClient, _ := client.NewClient(clientConfig)
// 将监听器添加到客户端
flashClient.Attach(postsListener)
// 启动监听
go flashClient.Start()
defer flashClient.Close()
// 监听程序中断信号
interrupt := make(chan os.Signal, 1)
signal.Notify(interrupt, os.Interrupt)
<-interrupt
fmt.Println("Program terminated.")
}
除了基本功能外,Flash 还提供了一些高级功能,例如: