2
0
mirror of https://github.com/hibiken/asynq.git synced 2024-11-10 11:31:58 +08:00

Document options precedence

This commit is contained in:
Ken Hibino 2019-12-21 10:02:03 -08:00
parent 4229073a24
commit f5b7e0cccd
2 changed files with 21 additions and 0 deletions

View File

@ -68,6 +68,9 @@ const (
// //
// Process returns nil if the task is registered successfully, // Process returns nil if the task is registered successfully,
// otherwise returns non-nil error. // otherwise returns non-nil error.
//
// opts specifies the behavior of task processing. If there are conflicting
// Option the last one overrides the ones before.
func (c *Client) Process(task *Task, processAt time.Time, opts ...Option) error { func (c *Client) Process(task *Task, processAt time.Time, opts ...Option) error {
opt := composeOptions(opts...) opt := composeOptions(opts...)
msg := &rdb.TaskMessage{ msg := &rdb.TaskMessage{

View File

@ -89,6 +89,24 @@ func TestClient(t *testing.T) {
}, },
wantScheduled: nil, // db is flushed in setup so zset does not exist hence nil wantScheduled: nil, // db is flushed in setup so zset does not exist hence nil
}, },
{
desc: "Conflicting options",
task: task,
processAt: time.Now(),
opts: []Option{
MaxRetry(2),
MaxRetry(10),
},
wantEnqueued: []*rdb.TaskMessage{
&rdb.TaskMessage{
Type: task.Type,
Payload: task.Payload,
Retry: 10, // Last option takes precedence
Queue: "default",
},
},
wantScheduled: nil, // db is flushed in setup so zset does not exist hence nil
},
} }
for _, tc := range tests { for _, tc := range tests {