Skip to content

Commit ec7129a

Browse files
authored
Update README.md
1 parent 6af0073 commit ec7129a

File tree

1 file changed

+25
-15
lines changed

1 file changed

+25
-15
lines changed

README.md

+25-15
Original file line numberDiff line numberDiff line change
@@ -19,27 +19,37 @@ dotnet add package Core.TaskProcessor
1919
## Initialization in AspNetCore
2020

2121
```csharp
22-
builder.Services.AddTaskProcessor(new TaskProcessorOptions
22+
builder.Services.AddTaskProcessor((sp, options) =>
2323
{
24-
Redis = "localhost:6379,abortConnect=false",
25-
Prefix = "{coretask}", // redis cluster mode needs single hash slot
26-
Queues = new[] { "high", "default", "low" }, // pop queues from left to right - first non empty queue wins
27-
MaxWorkers = 4, // action block concurrency limit
28-
Retries = 3,
29-
Invisibility = TimeSpan.FromMinutes(5), // task will be redelivered when taking longer than this
30-
BaseFrequency = TimeSpan.FromSeconds(5), // fetches tasks when reactive events failed
31-
PushbackFrequency = TimeSpan.FromSeconds(10), // how often to run task retry/delay pushbacks
32-
CleanUpFrequency = TimeSpan.FromMinutes(5), // how often to run batch cleanups
33-
Retention = TimeSpan.FromDays(7), // batch information will be kept this long
34-
UseHostedService = true, // use supplied background worker service
35-
OnTaskFailedDelay = (ctx, retry) => // delay retry on task failure
24+
options.Redis = "localhost:6379,abortConnect=false";
25+
options.Prefix = "{coretask}"; // redis cluster mode needs single hash slot
26+
options.Queues = ["high", "default", "low"]; // pop queues from left to right - first non empty queue wins
27+
options.MaxWorkers = 4; // action block concurrency limit
28+
options.Retries = 3; // if tasks fails x times its discarded or deadlettered
29+
options.Invisibility = TimeSpan.FromMinutes(5); // task will be redelivered when taking longer than this
30+
options.BaseFrequency = TimeSpan.FromSeconds(5); // fetches tasks when reactive events failed
31+
options.PushbackFrequency = TimeSpan.FromSeconds(10); // how often to run task retry/delay pushbacks
32+
options.CleanUpFrequency = TimeSpan.FromMinutes(5); // how often to run batch cleanups
33+
options.Retention = TimeSpan.FromDays(7); // batch information will be kept this long
34+
options.Deadletter = true; // move failed tasks to deadletter queues
35+
options.DeadletterUniqueSchedules = false; // ignore deadletter for unique schedules or they will pause indefinatly
36+
options.UseCronSeconds = false;
37+
options.OnTaskFailedDelay = (_, retry) => // delay retry on task failure
3638
Task.FromResult(retry switch
3739
{
3840
2 => TimeSpan.FromSeconds(5),
3941
1 => TimeSpan.FromSeconds(60),
40-
_ => (TimeSpan?)null,
41-
})
42+
_ => (TimeSpan?)null
43+
});
44+
options.OnTaskError = (_, exception) =>
45+
{
46+
sp.GetRequiredService<ILogger<ITaskProcessor>>()
47+
.LogError(exception, "Task Error");
48+
49+
return Task.CompletedTask;
50+
};
4251
});
52+
builder.Services.AddTaskProcessorExecutor();
4353
```
4454

4555
## Enqueue batch tasks

0 commit comments

Comments
 (0)