https://github.com/nuages-io/nuages-taskqueue
Nuages.TaskQueue is a .NET Core C# library that provides functionalities to execute code based on a task definition that are poll from a queue.
https://github.com/nuages-io/nuages-taskqueue
aws azure-storage-queue dotnetcore queue sqs
Last synced: about 1 month ago
JSON representation
Nuages.TaskQueue is a .NET Core C# library that provides functionalities to execute code based on a task definition that are poll from a queue.
- Host: GitHub
- URL: https://github.com/nuages-io/nuages-taskqueue
- Owner: nuages-io
- License: apache-2.0
- Created: 2021-10-27T15:30:59.000Z (almost 4 years ago)
- Default Branch: main
- Last Pushed: 2023-01-13T01:57:52.000Z (over 2 years ago)
- Last Synced: 2025-08-01T01:52:52.886Z (2 months ago)
- Topics: aws, azure-storage-queue, dotnetcore, queue, sqs
- Language: C#
- Homepage:
- Size: 961 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Nuages.TaskQueue
[](https://www.nuget.org/packages/Nuages.TaskQueue/)
[](https://www.nuget.org/packages/Nuages.TaskQueue.SQS/)
[](https://www.nuget.org/packages/Nuages.TaskQueue.ASQ/)[](https://github.com/nuages-io/nuages-taskqueue/actions/workflows/nuget.yml)
Nuages.TaskQueue bring Nuages.TaskRunner and Nuages.Queue together to offer a hosted task running service based on message from a queue.
It is available in two packages :
- Nuages.TaskQueue.SQS for AWS Simple Queue Service ([nuget](https://www.nuget.org/packages/Nuages.TaskQueue.SQS) | [source](https://github.com/nuages-io/nuages-taskqueue/tree/main/TaskQueue/Nuages.TaskQueue.SQS))
- Nuages.TaskQueue.ASQ for Azure Storage Queue ([nuget](https://www.nuget.org/packages/Nuages.TaskQueue.ASQ) | [source](https://github.com/nuages-io/nuages-taskqueue/tree/main/TaskQueue/Nuages.TaskQueue.ASQ))## How to use with SQS
### Configuration
```csharp
//Default SQS configuration
//You can provide your own implementation of IQueueClientProvider if you want to provide the instance using another way.
services.AddDefaultAWSOptions(configuration.GetAWSOptions())
.AddAWSService();
services.AddSQSTaskQueueWorker(configuration);```
appsettings.json
````json
{
"Queues":
{
"AutoCreateQueue" : true
},
"TaskQueueWorker" :
{
"QueueName" : "here-you-enter-your-queuename",
"Enabled" : true,
"MaxMessagesCount" : 1,
"WaitDelayInMillisecondsWhenNoMessages": 2000
},
"AWS": {
"Profile": null,
"Region": null
}
}````
Alternatively, you may want to provide the value using the Configure method.
```csharp
services.AddSQSTaskQueueWorker(configuration)
.Configure(options =>
{
//set options here
}).Configure(options =>
{
//set options here
});
```## Push message to the queue
You can push message on the queue the way you want. The important thing here is that the queue message body can be deserialize as a RunnableTaskDefinition.
This is what it should look like.
````json
{
"AssemblyQualifiedName": "Nuages.TaskRunner.Tasks.OutputToConsoleTask, Nuages.TaskRunner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null",
"Payload": { "Message" : "Started !!!!" }
}````
A service is provided to help you push such a message from your code. You need to use ISQSQueueService for that.
```csharp
var data = new OutputToConsoleTaskData { Message = message };
var taskData = RunnableTaskDefinitionCreator.Create(data);//ISQSQueueService _isqsQueueService injected using DI
await _isqsQueueService.EnqueueTaskAsync("queue-name-goes-here", taskData);
```## Samples
- [Nuages.TaskQueue.Samples.SQS.Console](https://github.com/nuages-io/nuages-taskqueue/tree/main/TaskQueue/Nuages.TaskQueue.Samples.SQS.Console)
- [Nuages.TaskQueue.Samples.SQS.Web](https://github.com/nuages-io/nuages-taskqueue/tree/main/TaskQueue/Nuages.TaskQueue.Samples.SQS.Web)
- [Nuages.TaskQueue.Samples.ASQ.Console](https://github.com/nuages-io/nuages-taskqueue/tree/main/TaskQueue/Nuages.TaskQueue.Samples.ASQ.Console)
- [Nuages.TaskQueue.Samples.Simple.Console](https://github.com/nuages-io/nuages-taskqueue/tree/main/TaskQueue/Nuages.TaskQueue.Samples.Simple.Console)