// NewChord creates Chord instance func NewChord(group *Group, callback *signatures.TaskSignature) *Chord { // Generate a UUID for the chord callback callback.UUID = fmt.Sprintf("chord_%v", uuid.New()) // Add a chord callback to all tasks for _, task := range group.Tasks { task.ChordCallback = callback } return &Chord{Group: group, Callback: callback} }
// SendTask publishes a task to the default queue func (server *Server) SendTask(signature *signatures.TaskSignature) (*backends.AsyncResult, error) { // Make sure result backend is defined if server.backend == nil { return nil, errors.New("Result backend required") } // Auto generate a UUID if not set already if signature.UUID == "" { signature.UUID = fmt.Sprintf("task_%v", uuid.New()) } // Set initial task state to PENDING if err := server.backend.SetStatePending(signature); err != nil { return nil, fmt.Errorf("Set State Pending: %v", err) } if err := server.broker.Publish(signature); err != nil { return nil, fmt.Errorf("Publish Message: %v", err) } return backends.NewAsyncResult(signature, server.backend), nil }