修改:使用 数据库配置定时调度,配置变更发送指令重新加载

git-svn-id: svn://47.119.165.148/zhub@67 e63fbceb-bcc3-4977-ac22-735b83d8d0f4
This commit is contained in:
lxy
2021-01-12 10:56:22 +00:00
parent 3d380e9353
commit 080d9be53b
7 changed files with 107 additions and 27 deletions

View File

@@ -70,6 +70,14 @@ func msgAccept(v Message) {
daly(rcmd, c)
case "timer":
zsub.timer(rcmd, c)
case "cmd":
if len(rcmd) == 1 {
return
}
switch rcmd[1] {
case "reload-timer-config":
zsub.reloadTimerConfig()
}
default:
send(c.conn, "-Error: default not supported:["+strings.Join(rcmd, " ")+"]")
return

View File

@@ -17,6 +17,10 @@ var (
}
)
func init() {
zsub.reloadTimerConfig()
}
type ZSub struct {
sync.Mutex
topics map[string]*ZTopic

View File

@@ -2,7 +2,9 @@ package zsub
import (
"bytes"
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
"github.com/robfig/cron"
"log"
"os/exec"
@@ -32,7 +34,9 @@ func (s *ZSub) timer(rcmd []string, c *ZConn) {
}
s.timers[rcmd[1]] = timer
}
timer.conns = c.appendTo(timer.conns)
if c != nil {
timer.conns = c.appendTo(timer.conns)
}
// todo: when timer.expr changed send message to all the timers subscribe
if len(rcmd) == 4 && !strings.EqualFold(timer.expr, rcmd[2]) {
@@ -55,8 +59,8 @@ func (s *ZSub) timer(rcmd []string, c *ZConn) {
}()
timer.configSave()
}
if len(rcmd) == 4 && !strings.EqualFold("a", rcmd[3]) && !timer.single {
timer.single = true
if len(rcmd) == 4 && (strings.EqualFold("a", rcmd[3]) != timer.single) {
timer.single = strings.EqualFold("a", rcmd[3])
timer.configSave()
}
@@ -104,14 +108,18 @@ func (t *ZTimer) configSave() {
log.Println(err)
}
fmt.Println(buf.String())
//fmt.Println(buf.String())
rest, err, s := executeShell(buf.String())
if err != nil {
log.Println(err)
}
fmt.Println("res:", rest)
fmt.Println("error-rest:", s)
if !strings.EqualFold(rest, "") {
fmt.Println("res:", rest)
}
if !strings.EqualFold(s, "") {
fmt.Println("error-rest:", s)
}
}
func executeShell(command string) (string, error, string) {
@@ -123,3 +131,27 @@ func executeShell(command string) (string, error, string) {
err := cmd.Run()
return stdout.String(), err, stderr.String()
}
func (s *ZSub) reloadTimerConfig() {
db, err := sql.Open("mysql", "root:*Zhong123098!@tcp(47.111.150.118:6063)/platf_oth?charset=utf8") // dev
//db, err := sql.Open("mysql", "root:*Hello@27.com!@tcp(0.0.0.0:6033)/platf_oth?charset=utf8") // qc
//db, err := sql.Open("mysql", "root:*Hello@27.com!@tcp(122.112.180.156:6033)/platf_oth?charset=utf8") // pro
if err != nil {
log.Println(err)
return
}
defer db.Close()
rows, err := db.Query("SELECT t.`name`,t.`expr`,IF(t.`single`=1,'a','x') 'single' FROM tasktimer t WHERE t.`status`=10 ORDER BY t.`timerid`")
if err != nil {
log.Println(err)
}
for rows.Next() {
var name string
var expr string
var single string
rows.Scan(&name, &expr, &single)
s.timer([]string{"timer", name, expr, single}, nil) //["timer", topic, expr, a|x]
}
}