start method

Future<void> start()

Starts the worker loop. The returned future completes when stop is called.

Implementation

Future<void> start() async {
  if (_running) return;
  _running = true;
  _stopCompleter = Completer<void>();
  metrics.start();

  Logger.staticInfo('⚙️  Worker started — queues: ${queues.join(", ")} (concurrency: $concurrency${maxJobsPerSecond > 0 ? ', rate: ${maxJobsPerSecond}/s' : ''})');

  // Start rate limit reset timer if rate limiting is enabled
  if (maxJobsPerSecond > 0) {
    _rateLimitResetTimer = Timer.periodic(const Duration(seconds: 1), (_) {
      _jobsStartedThisSecond = 0;
    });
  }

  _pollTimer = Timer.periodic(pollInterval, (_) => _poll());
  // Also do an immediate poll
  _poll();

  return _stopCompleter!.future;
}