purgeDeadLetters method
Removes dead letter entries from queue.
When since is provided, only entries with deadAt greater than or equal
to the timestamp must be removed. When limit is set, at most that many
entries are purged. Returns the number of entries removed.
Implementation
@override
Future<int> purgeDeadLetters(
String queue, {
DateTime? since,
int? limit,
}) async {
final state = _state(queue);
final candidates = state.deadLetters.where((entry) {
if (since == null) return true;
return !entry.deadAt.isBefore(since);
}).toList()..sort((a, b) => b.deadAt.compareTo(a.deadAt));
final toRemove =
(limit != null && limit >= 0
? candidates.take(limit).toList()
: candidates)
..forEach(state.deadLetters.remove);
return toRemove.length;
}