public DefaultRedisWorkerOptions()
 {
     Audit   = true;
     Retries = 3;
     MaxDegreeOfParallelism    = 5;
     ProcessingGracePeriod     = new TimeSpan(0, 5, 0);
     OrphanedInProcessInterval = new TimeSpan(0, 5, 0);
     NamingStrategy            = new DefaultRedisWorkerNamingStrategy(typeof(TWork).Name);
 }
Exemplo n.º 2
0
        public static void QueueWork <TWork>(this IRedisClient redisClient, TWork work, IRedisWorkerNamingStrategy redisWorkerNamingStrategy)
        {
            var workId = Guid.NewGuid().ToString();

            using (var redisTransaction = redisClient.CreateTransaction())
            {
                var redisWork = new RedisWork <TWork>
                {
                    WhenQueued = DateTime.UtcNow,
                    RetryCount = 0,
                    Work       = work
                };

                var serializedRedisWork = JsonSerializer.SerializeToString(redisWork);

                redisTransaction.QueueCommand(client => client.PushItemToList(redisWorkerNamingStrategy.QueueName, workId));
                redisTransaction.QueueCommand(client => client.SetEntryInHash(redisWorkerNamingStrategy.WorkName, workId, serializedRedisWork));

                redisTransaction.Commit();
            }
        }