4

I use Symfony 4 with messenger and I use a worker who consumes my messages as a long-running process.

I have a bug with doctrine if I delete my post and recreate a new one and I dispatch my message. $post have the old data and not the new one.

I have tried a lot of things and nothing work, it works when I restart my worker.

class ChannelMessageHandler implements MessageHandlerInterface
{
    private $channel;
    private $bus;

    public function __construct(ChannelService $channel, MessageBusInterface $commandBus)
    {
        $this->channel = $channel;
        $this->bus = $commandBus;
    }

    public function __invoke(ChannelMessage $channelMessage)
    {
        $error = $this->channel->handleChannel($channelMessage->getUser(), $channelMessage->getService());
        if ($error) {
            throw new Exception($error[0]);
        }
        $this->bus->dispatch(new FeedMessage($channelMessage->getUser(), $channelMessage->getService()));
    }
   }
}

My MessageHandler call a service :

class ChannelService implements ContainerAwareInterface
{
    use ContainerTrait;

    protected $em;
    protected $logger;

    public function __construct(EntityManagerInterface $entityManager, LoggerInterface $logger)
    {
        $this->em = $entityManager;
        $this->logger = $logger;
    }

    public function handleChannel($userId, $serviceName)
    {
        $user = $this->em->getRepository('App:User\Authentication\User')->findOneById($userId);
        $post = $user->getPost();

        return $this->getUserAnalyticBy($post, $serviceName);
    }

thanks a lot

Spawnrad
  • 445
  • 6
  • 18

0 Answers0