Package Description
$ dotnet add package Iskra.Clients.SequenceGeneratorПакет Iskra.Clients.SequenceGenerator предоставляет клиентскую библиотеку для работы с генератором последовательностей. Он позволяет создавать, обновлять, удалять и получать счетчики последовательностей, а также получать следующие значения этих счетчиков.
Установите пакет через NuGet:
dotnet add package Iskra.Clients.SequenceGenerator
Добавьте пакет в ваш проект и настройте его в Startup.cs или Program.cs вашего приложения.
Startup.cs:public void ConfigureServices(IServiceCollection services)
{
// Добавление генератора последовательностей с фоновым сервисом для проверки существования необходимых счетчиков
services.AddReoSequenceGeneratorWithCounterNameExistsChecking(Configuration);
}
Program.cs (для .NET 6 и выше):public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureServices((context, services) =>
{
// Добавление генератора последовательностей с фоновым сервисом для проверки существования необходимых счетчиков
services.AddReoSequenceGeneratorWithCounterNameExistsChecking(context.Configuration);
});
Внедрите ISequenceGeneratorClient в ваш класс и используйте его методы для работы с счетчиками последовательностей.
public class SequenceService
{
private readonly ISequenceGeneratorClient _sequenceGeneratorClient;
public SequenceService(ISequenceGeneratorClient sequenceGeneratorClient)
{
_sequenceGeneratorClient = sequenceGeneratorClient;
}
public async Task<int> GetNextSequenceValue(string name, CancellationToken token = default)
{
var sequence = await _sequenceGeneratorClient.GetNextAsync(name, token);
return sequence.Value;
}
}
Task<Sequence> GetAsync(string name, CancellationToken token);
Task<Sequence> UpdateAsync(string name, int value, CancellationToken token);
Task<Sequence> CreateAsync(string name, CancellationToken token);
Task<bool> DeleteAsync(string name, CancellationToken token);
Task<IReadOnlyCollection<Sequence>> GetAllAsync(CancellationToken token);
Task<Sequence> GetNextAsync(string name, CancellationToken token);
Task<BulkSequence> GetNextBulkAsync(string name, int chunkSize, CancellationToken token);
public async Task<int> CreateAndGetNextValue(string sequenceName)
{
// Создаем счетчик последовательности
await _sequenceGeneratorClient.CreateAsync(sequenceName);
// Получаем следующее значение счетчика
var nextSequence = await _sequenceGeneratorClient.GetNextAsync(sequenceName);
return nextSequence.Value;
}
public async Task<int> UpdateAndGetNextValue(string sequenceName, int newValue)
{
// Обновляем значение счетчика
await _sequenceGeneratorClient.UpdateAsync(sequenceName, newValue);
// Получаем следующее значение счетчика
var nextSequence = await _sequenceGeneratorClient.GetNextAsync(sequenceName);
return nextSequence.Value;
}