Merhabalar geliştirdiğimiz bir proje için muhasebe entegrasyonu gerekli ve entegrasyon firmasının dokümanında belirtine göre uç noktalara 10 saniyede 10 adet istek atabiliyoruz.
Projemizde ki kurguya göre aynı anda 200 istekte atabiliriz (örneğin fatura oluştururken ilgili ürünü oluşturmak içinde bir istek için birden fazla istek de atmamız gerekebilir), bu engele takılmamak için bir Job oluşturdum fakat delay
konusunda doğru anladığımdan emin değilim.
config\queue.php
QUEUE_CONNECTION=database
Örneğin 50 fatura eklemek için:
public function store(Request $request){
foreach ($request->input('data') as $key => $data){
$invoice = Invoice::create($data);
InvoiceJob::dispatch($invoice)->delay(now()->addSeconds($key * 10));
}
}
Dokümantasyona göre her emri 10 saniye aralıkla çalışmasını beklerken tüm emirler sırasıyla herhangi bir erteleme olmadan çalışıyor ve haliyle çoğu istek 500 sonucu ile dönüyor. Bu konuda fikrin olan var mı acaba?
Ayrıca emir çalışırken öngöremediğim bir problem olursa tekrar çalıştırması için kuyruğa eklemeyi deniyorum.
Jobs\InvoiceJob.php
public function failed(Exception $exception)
{
$this->release(now()->addSeconds(10));
}
Daha önce queue tecrübem olmadı kaçırdığım noktayı göremiyorum, burada da aynı şekilde tekrar kuyruğa eklendiğinde herhangi bir erteleme olmadan çalışıyor.