setConfigDynamically($settings);
$driver = Arr::get($settings, 'queue_driver', config('queue.default'));
try {
Queue::connection($driver)->size();
} catch (Exception $e) {
return $this->getErrorMessage($e, $driver);
}
}
private function setConfigDynamically($settings)
{
foreach ($settings as $key => $value) {
// SQS_QUEUE_KEY => sqs.queue.key
$key = strtolower(str_replace('_', '.', $key));
// sqs.queue.key => sqs.key
$key = str_replace('queue.', '', $key);
$key = str_replace('name', 'queue', $key);
Config::set("queue.connections.$key", $value);
}
}
/**
* @param Exception $e
* @param string $driver
* @return array
*/
private function getErrorMessage($e, $driver)
{
return ['queue_group' => "Could not change queue driver to $driver.
{$e->getMessage()}"];
}
}