createDriverFromConfig method
Creates a queue driver instance from configuration. Throws QueueException if driver type is unknown or configuration is invalid.
Implementation
@override
QueueDriver createDriverFromConfig(
String driverType,
Map<String, dynamic> settings,
) {
final driverName = settings['name'] as String? ?? driverType;
final trackMetrics = settings['track_metrics'] as bool? ?? true;
final useDLQ = settings['use_dlq'] as bool? ?? true;
final maxRetries = settings['max_retries'] as int? ?? 3;
final timeout = settings['timeout'] as int?;
final config = DriverConfig(
name: driverName,
trackMetrics: trackMetrics,
useDLQ: useDLQ,
maxRetries: maxRetries,
defaultJobTimeout: timeout != null ? Duration(seconds: timeout) : null,
);
switch (driverType.toLowerCase()) {
case 'memory':
case 'in_memory':
return InMemoryDriver(config: config);
case 'sync':
case 'synchronous':
return SynchronousDriver(config: config);
case 'file':
case 'file_storage':
final path = settings['path'] as String? ?? './storage/queue';
return FileStorageDriver(
config: config,
storagePath: path,
);
case 'redis':
case 'redis_storage':
final host = settings['host'] as String? ?? 'localhost';
final port = settings['port'] as int? ?? 6379;
final password = settings['password'] as String?;
final queueName = settings['queue_name'] as String? ?? config.name;
return RedisStorageDriver(
config: config,
host: host,
port: port,
password: password,
queueName: queueName,
);
default:
throw QueueException('Unknown queue driver: $driverType');
}
}