Documentation
¶
Index ¶
Constants ¶
View Source
const ( TaskFailed = iota TaskDone TaskActive TaskPending TaskDropped )
Variables ¶
View Source
var ( DispatcherQueueLength = prometheus.NewGauge(prometheus.GaugeOpts{ Name: "dispatcher_queue_length", }) DispatcherTasksActive = prometheus.NewGauge(prometheus.GaugeOpts{ Name: "dispatcher_tasks_active", }) DispatcherTasksQueued = prometheus.NewCounter(prometheus.CounterOpts{ Name: "dispatcher_tasks_queued", }) DispatcherTasksDropped = prometheus.NewCounter(prometheus.CounterOpts{ Name: "dispatcher_tasks_dropped", }) DispatcherTasksDone = prometheus.NewCounterVec(prometheus.CounterOpts{ Name: "dispatcher_tasks_done", }, []string{"agent_id"}) DispatcherTasksFailed = prometheus.NewCounterVec(prometheus.CounterOpts{ Name: "dispatcher_tasks_failed", }, []string{"agent_id"}) )
View Source
var ErrInvalidPayload = errors.New("invalid payload")
Functions ¶
func RegisterMetrics ¶ added in v0.10.11
func RegisterMetrics()
func SetLogger ¶
func SetLogger(l *zap.SugaredLogger)
Types ¶
type Dispatcher ¶
type Dispatcher struct {
// contains filtered or unexported fields
}
func Start ¶
func Start(parallel int, worker Worker, tasksBuffer int) Dispatcher
Start spawns a pool of workers. tasksBuffer sets how many tasks should be pre-emptively put into each worker's incoming queue. Set to 0 for prevent greedy tasks assignment (this will make `Dispatch` blocking).
func (*Dispatcher) Dispatch ¶
func (d *Dispatcher) Dispatch(payload interface{}) *Result
Dispatch takes `payload`, wraps it into a `Task` and dispatches to the first available `Worker`.
func (Dispatcher) Stop ¶
func (d Dispatcher) Stop()
type Result ¶ added in v0.7.0
Result is a result of Task execution. TODO: setting/returning this needs to be implemented better using channels.
type Task ¶
type Task struct { Payload interface{} Dispatcher *Dispatcher // contains filtered or unexported fields }
Task represents a unit of work. Each worker should accept it as an argument. Example:
func (w encoderWorker) Work(t dispatcher.Task) error { r := t.Payload.(*resolve.TranscodingRequest) ...
Click to show internal directories.
Click to hide internal directories.