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