/
vshmidt
/
masstransit
Обзор
Документация
Войти
/
vshmidt
/
masstransit
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
develop
src/Persistence/MassTransit.RedisIntegration/Configuration/RedisSagaRepositoryOptions.cs
50 строк
2 KB
Chris Patterson
Fixed #4997 - Added per-saga Redis configuration with cached connection multiplexers to minimize connections to Redis.
07 мар 2024, 21:18
07 мар 2024, 21:18
a130973
Код
Авторство
О чём код?
namespace MassTransit { using System; public class RedisSagaRepositoryOptions<TSaga> where TSaga : class, ISaga { public RedisSagaRepositoryOptions(ConcurrencyMode concurrencyMode, TimeSpan? lockTimeout, string lockSuffix, string keyPrefix, RedisConnectionFactory connectionFactory, SelectDatabase databaseSelector, TimeSpan? expiry, IRetryPolicy retryPolicy) { ConcurrencyMode = concurrencyMode; LockTimeout = lockTimeout ?? TimeSpan.FromSeconds(30); LockSuffix = string.IsNullOrEmpty(lockSuffix) ? "_lock" : lockSuffix; KeyPrefix = string.IsNullOrWhiteSpace(keyPrefix) ? null : keyPrefix.EndsWith(":") ? keyPrefix : $"{keyPrefix}:"; RetryPolicy = retryPolicy ?? Retry.Exponential(10, TimeSpan.FromMilliseconds(100), TimeSpan.FromSeconds(10), TimeSpan.FromMilliseconds(918)); ConnectionFactory = connectionFactory; DatabaseSelector = databaseSelector; Expiry = expiry; } public IRetryPolicy RetryPolicy { get; } public string KeyPrefix { get; } public TimeSpan LockTimeout { get; } public string LockSuffix { get; } public ConcurrencyMode ConcurrencyMode { get; } public SelectDatabase DatabaseSelector { get; } public RedisConnectionFactory ConnectionFactory { get; } public TimeSpan? Expiry { get; } public string FormatSagaKey(Guid correlationId) { return KeyPrefix != null ? $"{KeyPrefix}{correlationId}" : correlationId.ToString(); } public string FormatLockKey(Guid correlationId) { return LockSuffix != null ? KeyPrefix != null ? $"{KeyPrefix}{correlationId}{LockSuffix}" : $"{correlationId}{LockSuffix}" : FormatSagaKey(correlationId); } } }