Symfony Worker-使用消息-EntityManager

时间:2018-12-13 15:37:34

标签: symfony doctrine-orm doctrine symfony-messenger

我将Symfony 4与Messenger一起使用,并使用一个将消息作为长期运行过程使用的工作程序。

如果我删除帖子并重新创建一个新帖子并发送消息,则我有一个学说错误。 $ post包含旧数据,而不包含新数据。

我尝试了很多事情,但没有任何效果,当我重新启动工作程序时,它可以正常工作。

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()));
    }
   }
}

我的MessageHandler调用服务:

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);
    }

非常感谢

0 个答案:

没有答案