我有一個在symfony2應用程序中實現的rabbitmq-consumer使用oldsound/rabbitmq-bundle 該應用程序每次消費10條消息,並使用doctrine-querybuilder從消息數據中給出的過濾器收集來自mysql-db的數據。 Cachingsystem是APC。 考慮查詢使rabbitmq-consumer中的doctrine ORM緩存失效| Symfony2
$qb = $this->entityManager
->getRepository('My\Entity')
->createQueryBuilder();
$qb
->select('sum(this) as this, sum(that) as that')
->andWhere('field in (:values)')
->setParameter('values', $filterValues);
$result = $qb
->getQuery()
->setSingleResult();
此查詢返回10次不同的過濾器值的相同數據的這種精簡碼。當消費者重新啓動並消費接下來的10條消息時,我再次得到10次不同的結果。 我想學說緩存負責本並試圖緩存像這樣無效:
$qb = $this->entityManager
->getRepository('My\Entity')
->createQueryBuilder();
$qb
->select('sum(this) as this, sum(that) as that')
->andWhere('field in (:values)')
->setParameter('values', $filterValues);
$result = $qb
->getQuery()
->setResultCacheLifetime(0)
->setSingleResult();
,但沒有效果。 我可以通過每次只消費1條消息來解決此問題,但這會降低我的應用程序到不可接受的程度。
任何人都可以在正確的方向暗示我嗎?
感謝, 喬喬
我們也在使用oldsound,你可以嘗試啓動10個消費者,每個消費者每次只消費1條消息嗎? –
我想你可以在你的查詢中使用這些:setCacheable(bool),useResultCache(bool) –