Skip to content

Commit da0c23a

Browse files
committed
Do not push duplicates to Redis queue, simulate unique list behavior
1 parent 70e5104 commit da0c23a

File tree

1 file changed

+7
-1
lines changed

1 file changed

+7
-1
lines changed

src/providers/WorkflowCore.Providers.Redis/Services/RedisQueueProvider.cs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,13 @@ public async Task QueueWork(string id, QueueType queue)
3636
if (_redis == null)
3737
throw new InvalidOperationException();
3838

39-
await _redis.ListRightPushAsync(GetQueueName(queue), id, When.Always);
39+
var queueName = GetQueueName(queue);
40+
41+
var insertResult = await _redis.ListInsertBeforeAsync(queueName, id, id);
42+
if (insertResult == -1 || insertResult == 0)
43+
await _redis.ListRightPushAsync(queueName, id, When.Always);
44+
else
45+
await _redis.ListRemoveAsync(queueName, id, 1);
4046
}
4147

4248
public async Task<string> DequeueWork(QueueType queue, CancellationToken cancellationToken)

0 commit comments

Comments
 (0)