44
55use Google \Cloud \Tasks \V2 \CloudTasksClient ;
66use Illuminate \Http \Request ;
7+ use Illuminate \Queue \Events \JobFailed ;
78use Illuminate \Queue \Worker ;
89use Illuminate \Queue \WorkerOptions ;
910use Firebase \JWT \JWT ;
@@ -33,6 +34,8 @@ public function handle($task = null)
3334
3435 $ task = $ task ?: $ this ->captureTask ();
3536
37+ $ this ->listenForEvents ();
38+
3639 $ this ->handleTask ($ task );
3740 }
3841
@@ -81,7 +84,11 @@ private function captureTask()
8184 {
8285 $ input = file_get_contents ('php://input ' );
8386
84- if ($ input === false ) {
87+ if (!$ input ) {
88+ $ input = request ('input ' ) ?: false ;
89+ }
90+
91+ if (!$ input ) {
8592 throw new CloudTasksException ('Could not read incoming task ' );
8693 }
8794
@@ -94,13 +101,27 @@ private function captureTask()
94101 return $ task ;
95102 }
96103
104+ private function listenForEvents ()
105+ {
106+ app ('events ' )->listen (JobFailed::class, function ($ event ) {
107+ app ('queue.failer ' )->log (
108+ 'cloudtasks ' , $ event ->job ->getQueue (),
109+ $ event ->job ->getRawBody (), $ event ->exception
110+ );
111+ });
112+ }
113+
97114 /**
98115 * @param $task
99116 * @throws CloudTasksException
100117 */
101118 private function handleTask ($ task )
102119 {
103- $ job = new CloudTasksJob ($ task , request ()->header ('X-CloudTasks-TaskRetryCount ' ));
120+ $ job = new CloudTasksJob ($ task );
121+
122+ $ job ->setAttempts (request ()->header ('X-CloudTasks-TaskRetryCount ' ) + 1 );
123+ $ job ->setQueue (request ()->header ('X-Cloudtasks-Queuename ' ));
124+ $ job ->setMaxTries (request ()->header ('X-Stackkit-Max-Attempts ' ));
104125
105126 $ worker = $ this ->getQueueWorker ();
106127
0 commit comments