ProcessAITranslateJob.php 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. <?php
  2. namespace App\Jobs;
  3. use App\Services\AiTranslateService;
  4. use Illuminate\Support\Facades\Log;
  5. class ProcessAITranslateJob extends BaseRabbitMQJob
  6. {
  7. private $aiService;
  8. protected function processMessage(array $messageData)
  9. {
  10. $startTime = microtime(true);
  11. try {
  12. // Laravel会自动注入
  13. $this->aiService = app(AiTranslateService::class);
  14. return $this->aiService->processTranslate($this->messageId, $messageData);
  15. } catch (\Exception $e) {
  16. // 记录失败指标
  17. throw $e;
  18. } finally {
  19. // 记录处理时间
  20. $processingTime = microtime(true) - $startTime;
  21. Log::info('翻译处理耗时', ['time' => $processingTime]);
  22. }
  23. }
  24. protected function handleFinalFailure(array $messageData, \Exception $exception)
  25. {
  26. parent::handleFinalFailure($messageData, $exception);
  27. // 消息处理最终失败,准备发送到死信队列
  28. $this->aiService->handleFailedTranslate($this->messageId, $messageData, $exception);
  29. }
  30. public function stop()
  31. {
  32. parent::stop();
  33. $this->aiService->stop();
  34. }
  35. public static function publish(AiTranslateService $ai) {}
  36. }