亞馬遜已經宣佈他們的new FIFO SQS service,我想在Laravel隊列中使用它來解決一些併發問題。如何在Laravel隊列中容納Amazon FIFO SQS?
我創建了幾個新隊列並更改了配置。但是,我有一個MissingParameter
錯誤,說
The request must contain the parameter MessageGroupId.
所以我修改了文件vendor/laravel/framework/src/Illuminate/Queue/SqsQueue.php
public function pushRaw($payload, $queue = null, array $options = [])
{
$response = $this->sqs->sendMessage(['QueueUrl' => $this->getQueue($queue), 'MessageBody' => $payload,
'MessageGroupId' => env('APP_ENV', getenv('APP_ENV'))]);
return $response->get('MessageId');
}
public function later($delay, $job, $data = '', $queue = null)
{
$payload = $this->createPayload($job, $data);
$delay = $this->getSeconds($delay);
return $this->sqs->sendMessage([
'QueueUrl' => $this->getQueue($queue), 'MessageBody' => $payload, 'DelaySeconds' => $delay,
'MessageGroupId' => env('APP_ENV', getenv('APP_ENV'))
])->get('MessageId');
}
我使用APP_ENV
作爲組ID(這是一個消息隊列所以實際上它不很重要,我只希望一切都是先進先出)。
但我仍然收到相同的錯誤消息。我怎麼修復它?任何幫助,將不勝感激。
(順便說一句,這裏擁有SDK定義sendMessage
?我可以爲它找到一個存根,但我沒有找到具體的實現)
我不得不在我的前綴中加入'config/queue.php'中的'sqsfifo'連接,但除此之外,這個工作完美無瑕! –