75 lines
1.8 KiB
Go
75 lines
1.8 KiB
Go
|
|
package main
|
||
|
|
|
||
|
|
import (
|
||
|
|
"fmt"
|
||
|
|
"log"
|
||
|
|
"time"
|
||
|
|
|
||
|
|
"code.tczkiot.com/seqlog"
|
||
|
|
)
|
||
|
|
|
||
|
|
func main() {
|
||
|
|
// 创建 Seqlog 实例
|
||
|
|
mgr := seqlog.NewLogHub("./logs", nil, nil)
|
||
|
|
|
||
|
|
// 注册 topic handler
|
||
|
|
processedCount := 0
|
||
|
|
err := mgr.RegisterHandler("app", func(record *seqlog.Record) error {
|
||
|
|
processedCount++
|
||
|
|
fmt.Printf("处理记录 #%d: %s\n", processedCount, string(record.Data))
|
||
|
|
time.Sleep(100 * time.Millisecond) // 模拟处理耗时
|
||
|
|
return nil
|
||
|
|
})
|
||
|
|
if err != nil {
|
||
|
|
log.Fatal(err)
|
||
|
|
}
|
||
|
|
|
||
|
|
// 写入一些记录
|
||
|
|
fmt.Println("=== 写入记录 ===")
|
||
|
|
for i := 0; i < 10; i++ {
|
||
|
|
data := fmt.Sprintf("日志消息 #%d", i)
|
||
|
|
offset, err := mgr.Write("app", []byte(data))
|
||
|
|
if err != nil {
|
||
|
|
log.Fatal(err)
|
||
|
|
}
|
||
|
|
fmt.Printf("写入: offset=%d, data=%s\n", offset, data)
|
||
|
|
}
|
||
|
|
|
||
|
|
// 启动处理
|
||
|
|
fmt.Println("\n=== 启动日志处理 ===")
|
||
|
|
err = mgr.Start()
|
||
|
|
if err != nil {
|
||
|
|
log.Fatal(err)
|
||
|
|
}
|
||
|
|
|
||
|
|
// 等待一段时间让处理器处理一些记录
|
||
|
|
time.Sleep(500 * time.Millisecond)
|
||
|
|
|
||
|
|
// 查询当前处理窗口的记录
|
||
|
|
fmt.Println("\n=== 查询当前处理窗口记录 ===")
|
||
|
|
records, err := mgr.QueryFromProcessing("app", 5)
|
||
|
|
if err != nil {
|
||
|
|
log.Fatal(err)
|
||
|
|
}
|
||
|
|
|
||
|
|
fmt.Printf("从处理窗口开始位置查询到 %d 条记录:\n", len(records))
|
||
|
|
for _, rec := range records {
|
||
|
|
fmt.Printf(" [索引 %d] %s - 状态: %s\n", rec.Index, string(rec.Record.Data), rec.Status)
|
||
|
|
}
|
||
|
|
|
||
|
|
// 查询更多记录
|
||
|
|
fmt.Println("\n=== 查询后续记录 ===")
|
||
|
|
moreRecords, err := mgr.QueryFromProcessing("app", 10)
|
||
|
|
if err != nil {
|
||
|
|
log.Fatal(err)
|
||
|
|
}
|
||
|
|
fmt.Printf("查询到 %d 条记录:\n", len(moreRecords))
|
||
|
|
for _, rec := range moreRecords {
|
||
|
|
fmt.Printf(" [索引 %d] %s - 状态: %s\n", rec.Index, string(rec.Record.Data), rec.Status)
|
||
|
|
}
|
||
|
|
|
||
|
|
// 清理
|
||
|
|
mgr.Stop()
|
||
|
|
fmt.Println("\n=== 示例完成 ===")
|
||
|
|
}
|