/**
  * @param PublishedMessage $mostRecentPublishedMessage
  * @throws InvalidPublishedMessageToTrack There can only be one last
  *     published message for exchange this exception's thrown if 2 are found
  */
 public function track(PublishedMessage $mostRecentPublishedMessage)
 {
     $builder = $this->createQueryBuilder('p');
     $builder->andWhere('p.exchangeName = :exchangeName')->setParameter('exchangeName', $mostRecentPublishedMessage->exchangeName());
     $currentMessage = $builder->getQuery()->getOneOrNullResult();
     if ($currentMessage && !$currentMessage->equals($mostRecentPublishedMessage)) {
         throw new InvalidPublishedMessageToTrack();
     }
     $this->_em->persist($mostRecentPublishedMessage);
     $this->_em->flush($mostRecentPublishedMessage);
 }