22 lines
673 B
C#
22 lines
673 B
C#
using System.Threading.Channels;
|
|
|
|
namespace BMA.EHR.Recruit.Services;
|
|
|
|
public class ImportJobQueue
|
|
{
|
|
private readonly Channel<ImportJobInfo> _channel = Channel.CreateBounded<ImportJobInfo>(new BoundedChannelOptions(100)
|
|
{
|
|
FullMode = BoundedChannelFullMode.Wait,
|
|
SingleReader = true
|
|
});
|
|
|
|
public async ValueTask EnqueueAsync(ImportJobInfo job, CancellationToken cancellationToken = default)
|
|
{
|
|
await _channel.Writer.WriteAsync(job, cancellationToken);
|
|
}
|
|
|
|
public async ValueTask<ImportJobInfo> DequeueAsync(CancellationToken cancellationToken)
|
|
{
|
|
return await _channel.Reader.ReadAsync(cancellationToken);
|
|
}
|
|
}
|