em = $em; $this->userRepository = $userRepository; $this->import = $import; $this->logger = $logger ?: new NullLogger(); } /** * {@inheritdoc} */ public function execute(AMQPMessage $msg) { $storedEntry = json_decode($msg->body, true); $user = $this->userRepository->find($storedEntry['userId']); // no user? Drop message if (null === $user) { $this->logger->warning('Unable to retrieve user', ['entry' => $storedEntry]); return; } $this->import->setUser($user); $entry = $this->import->parseEntry($storedEntry); if (null === $entry) { $this->logger->warning('Unable to parse entry', ['entry' => $storedEntry]); return; } try { $this->em->flush(); // clear only affected entities $this->em->clear(Entry::class); $this->em->clear(Tag::class); } catch (\Exception $e) { $this->logger->warning('Unable to save entry', ['entry' => $storedEntry, 'exception' => $e]); return; } } }