purgeDeadLetters method

  1. @override
Future<int> purgeDeadLetters(
  1. String queue, {
  2. DateTime? since,
  3. int? limit,
})
override

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;
}