getStats method

  1. @override
Future<Map<String, dynamic>> getStats()
override

Get driver statistics

Implementation

@override
Future<Map<String, dynamic>> getStats() async {
  final baseStats = await super.getStats();

  try {
    final command = await _getConnection();

    final mainCount = await command.send_object(['LLEN', _mainQueue]);
    final delayedCount = await command.send_object(['ZCARD', _delayedQueue]);
    final processingCount =
        await command.send_object(['HLEN', _processingHash]);
    final failedCount = await command.send_object(['LLEN', _failedQueue]);

    return {
      ...baseStats,
      'connection': {
        'host': host,
        'port': port,
        'is_connected': _isConnected,
        'queue_name': queueName,
      },
      'queue': {
        'main_jobs': mainCount ?? 0,
        'delayed_jobs': delayedCount ?? 0,
        'processing_jobs': processingCount ?? 0,
        'failed_jobs': failedCount ?? 0,
        'total_jobs': (mainCount ?? 0) + (delayedCount ?? 0),
      },
    };
  } catch (e) {
    return {
      ...baseStats,
      'error': e.toString(),
    };
  }
}