Ecozum.InMemoryQueue 1.0.1
Introduction
Bu paket, uzun sürecek ve yanıt beklenmeyen işlemlerin in-memory queue ile main thread'den bağımsız olarak yürütülmesini sağlar. Bu sayede, uygulamanın ana akışı uzun süren işlemlerden etkilenmeden devam eder.
Impementation
class Startup
{
public IServiceProvider ConfigureServices(IServiceCollection services)
{
services.AddInMemoryQueue()
.AddConsumer<SomeQueueConsumer_1>(queueName: "some_queue_1")
.AddConsumer<SomeQueueConsumer_2>()
.AddConsumersFromAssembly(typeof(Startup).Assembly, queueNameExpression: type =>
{
var attr = type.GetCustomAttribute<DescriptionAttribute>();
return attr?.Description ?? type.Name;
});
}
}
//Sample Queue Consumer 1
class SomeQueueConsumer_1: QueueConsumer
{
public SomeQueueConsumer_1(IServiceProvider serviceProvider) : base(serviceProvider)
{
}
public override Task Process(object message)
{
if (message is MyQueueModel model)
{
Debug.WriteLine(model.MyProperty);
}
return Task.CompletedTask;
}
}
//Sample Queue Consumer 2
[Description("some_queue_2")]
class SomeQueueConsumer_2: QueueConsumer
{
public SomeQueueConsumer_1(IServiceProvider serviceProvider) : base(serviceProvider)
{
}
public override Task Process(object message)
{
if (message is MyQueueModel model)
{
Debug.WriteLine(model.MyProperty);
}
return Task.CompletedTask;
}
}
Using
public class FooController : ControllerBase
{
private readonly IInMemoryQueuePublisher _queue;
public FooController(IInMemoryQueuePublisher queue)
{
_queue = queue;
}
[HttpGet]
public IActionResult Queue()
{
_queue.Publish("some_queue_1", new MyQueueModel { MyProperty = "bar" });
return Ok();
}
}
No packages depend on Ecozum.InMemoryQueue.
.NET Standard 2.0
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 2.2.0)
- Microsoft.Extensions.Hosting.Abstractions (>= 2.2.0)
- Microsoft.Extensions.Logging.Abstractions (>= 2.2.0)
- System.Threading.Channels (>= 6.0.0)
| Version | Downloads | Last updated |
|---|---|---|
| 1.0.1 | 238 | 28.09.2022 |