代码拉取完成,页面将自动刷新
package delayqueue
// Monitor can get running status and events of DelayQueue
type Monitor struct {
inner *DelayQueue
}
// NewMonitor0 creates a new Monitor by a RedisCli instance
func NewMonitor0(name string, cli RedisCli, opts ...interface{}) *Monitor {
return &Monitor{
inner: NewQueue0(name, cli, opts...),
}
}
// WithLogger customizes logger for queue
func (m *Monitor) WithLogger(logger Logger) *Monitor {
m.inner.logger = logger
return m
}
// GetPendingCount returns the number of messages which delivery time has not arrived
func (m *Monitor) GetPendingCount() (int64, error) {
return m.inner.GetPendingCount()
}
// GetReadyCount returns the number of messages which have arrived delivery time but but have not been delivered yet
func (m *Monitor) GetReadyCount() (int64, error) {
return m.inner.GetReadyCount()
}
// GetProcessingCount returns the number of messages which are being processed
func (m *Monitor) GetProcessingCount() (int64, error) {
return m.inner.GetProcessingCount()
}
// ListenEvent register a listener which will be called when events occured in this queue
// so it can be used to monitor running status
// returns: close function, error
func (m *Monitor) ListenEvent(listener EventListener) (func(), error) {
reportChan := genReportChannel(m.inner.name)
sub, closer, err := m.inner.redisCli.Subscribe(reportChan)
if err != nil {
return nil, err
}
go func() {
for payload := range sub {
event, err := decodeEvent(payload)
if err != nil {
m.inner.logger.Errorf("[listen event] %v\n", event)
} else {
listener.OnEvent(event)
}
}
}()
return closer, nil
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。