delaytrigger

package
v1.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 11, 2020 License: Apache-2.0 Imports: 6 Imported by: 0

README

延迟触发器

使用场景

  • 定时通知指定人群
  • 接收信号再通知指定人群

名词解释

事件 Event
  • ID 触发器内唯一
  • Status 状态,禁用/活跃/完成
  • TriggerTs 触发时间戳
  • Data 数据,透传
目标 Target
  • ID 事件内唯一

数据结构

触发器信息 redis.hset
  • field EventID
  • value Event
事件信息 redis.sets
  • targets

如何使用

简介
  1. 启动 Walk,Walk会遍历所有生效事件,将事件的数据和目标传递给回调函数处理
  2. 注册事件 EventRegister,可通过参数配置是否有效、触发时间
  3. 注册事件目标 TargetRegister
  4. 【可选】再次注册事件,激活事件或者关闭事件
其他
  1. 支持取消目标的注册 TargetUnregister
  2. Walk支持多实例,无需加锁
  3. 可通过 GetEvents 或 GetEventsAndCounts 查看事件信息和目标数量

Documentation

Overview

Package delaytrigger 延迟触发器

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type DelayTrigger

type DelayTrigger struct {
	// contains filtered or unexported fields
}

DelayTrigger 延迟触发器

func New

func New(pool *redigo.Pool, name string) *DelayTrigger

New 获取一个新的触发器

func (*DelayTrigger) EventExists

func (trigger *DelayTrigger) EventExists(eventID string) (bool, error)

EventExists 是否存在事件

func (*DelayTrigger) EventRegister

func (trigger *DelayTrigger) EventRegister(event *Event, isCover bool) error

EventRegister 注册自定义事件 isCover 是否覆盖

func (*DelayTrigger) EventRegisterTimer

func (trigger *DelayTrigger) EventRegisterTimer(eventID string, triggerTs int64, eventData string, isCover bool) error

EventRegisterTimer 注册定时触发事件 isCover 是否覆盖

func (*DelayTrigger) EventUnregister

func (trigger *DelayTrigger) EventUnregister(eventID string) error

EventUnregister 取消注册事件 清除改事件的所有信息

func (*DelayTrigger) GetActivedEvents

func (trigger *DelayTrigger) GetActivedEvents() ([]*Event, error)

GetActivedEvents 获得所有活跃事件

func (*DelayTrigger) GetActivedEventsAndCounts

func (trigger *DelayTrigger) GetActivedEventsAndCounts() (int, []*EventAndCount, error)

GetActivedEventsAndCounts 获得所有活跃事件 和 目标数

func (*DelayTrigger) GetActivedEventsAndCountsByID

func (trigger *DelayTrigger) GetActivedEventsAndCountsByID(ids []string) (int, []*EventAndCount, error)

GetActivedEventsAndCountsByID 获得所有活跃事件 和 目标数

func (*DelayTrigger) GetActivedEventsByID

func (trigger *DelayTrigger) GetActivedEventsByID(ids []string) ([]*Event, error)

GetActivedEventsByID 按事件id获得所有活跃事件

func (*DelayTrigger) GetEvents

func (trigger *DelayTrigger) GetEvents() ([]*Event, error)

GetEvents 获得所有事件

func (*DelayTrigger) GetEventsAndCounts

func (trigger *DelayTrigger) GetEventsAndCounts() (int, []*EventAndCount, error)

GetEventsAndCounts 获得所有事件 和 目标数

func (*DelayTrigger) GetEventsAndCountsByParam

func (trigger *DelayTrigger) GetEventsAndCountsByParam(param *Param) (int, []*EventAndCount, error)

GetEventsAndCountsByParam 获取所有事件信息

func (*DelayTrigger) GetEventsByParam

func (trigger *DelayTrigger) GetEventsByParam(param *Param) ([]*Event, error)

GetEventsByParam 获取指定事件 ids statuses 为空表示 全匹配

func (*DelayTrigger) TargetExists

func (trigger *DelayTrigger) TargetExists(eventID, targetID string) (bool, error)

TargetExists 是否存在目标

func (*DelayTrigger) TargetRegister

func (trigger *DelayTrigger) TargetRegister(eventID string, targetIDS ...string) error

TargetRegister 注册目标

func (*DelayTrigger) TargetUnregister

func (trigger *DelayTrigger) TargetUnregister(eventID string, targetIDS ...string) error

TargetUnregister 取消注册目标

func (*DelayTrigger) WalkActived

func (trigger *DelayTrigger) WalkActived(walkID string, handle WalkHandle, stop WalkStop) (err error)

WalkActived 遍历活跃

func (*DelayTrigger) WalkActivedByEventID

func (trigger *DelayTrigger) WalkActivedByEventID(walkID string, ids []string, handle WalkHandle, stop WalkStop) (err error)

WalkActivedByEventID 遍历活跃 按 eventid

func (*DelayTrigger) WalkByParam

func (trigger *DelayTrigger) WalkByParam(walkID string, param *Param, handle WalkHandle, stop WalkStop) (err error)

WalkByParam 遍历

type Event

type Event struct {
	ID        string      `json:"id,omitempty"`         // ID
	Status    EventStatus `json:"status,omitempty"`     // 状态
	TriggerTs int64       `json:"trigger_ts,omitempty"` // 触发时间戳
	Data      string      `json:"data,omitempty"`       // 事件数据
	IsKeep    bool        `json:"is_keep,omitempty"`    // 目标处理完毕后是否保留事件, 不保留会自动反注册
}

Event 事件数据

type EventAndCount

type EventAndCount struct {
	*Event
	Count int
}

EventAndCount 事件信息和目标数

type EventStatus

type EventStatus int

EventStatus 事件状态

const (
	EventStatusDisable  EventStatus = iota // 已关闭
	EventStatusActived                     // 已激活
	EventStatusFinished                    // 已完成
)

常量

type Param

type Param struct {
	IDS            []string
	Statuses       []EventStatus
	TriggerTsRange *TriggerTsRange
}

Param 参数

type TriggerTsRange

type TriggerTsRange struct {
	Min int64
	Max int64
}

TriggerTsRange 触发时间范围

type WalkHandle

type WalkHandle func(targetID, eventData string) error

WalkHandle 目标处理的回调

type WalkStop

type WalkStop func() bool

WalkStop 停止遍历的判断

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL