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.

Version Downloads Last updated
1.0.1 238 28.09.2022