doctrine/mongodb-odm-tailable-cursor-bundle
tailableCursor()) exist.tailableCursor → dispatch()) would require custom glue code.$collection->watch() or tailableCursor()).MongoDBServiceProvider).mongodb/mongodb to ≤1.11.x (if using raw driver).doctrine/mongodb-odm-bundle and doctrine/mongodb-odm (v3.x).DoctrineMongoDBBundle in config/bundles.php (Symfony-style).config/packages/doctrine_mongodb_odm.yaml.@TailableCursor annotation (if supported).class TailableCursorRepository extends Repository {
public function getTailableCursor(): Cursor {
return $this->dm->getDocumentManager()
->getRepository('App\Document')
->createQueryBuilder()
->getQuery()
->execute(null, ['tailable' => true]);
}
}
$cursor = $repo->getTailableCursor();
while ($cursor->hasNext()) {
$doc = $cursor->next();
dispatch(new ProcessDocumentJob($doc));
}
$manager = new \MongoDB\Client()->selectCollection('db', 'collection');
$cursor = $manager->watch([], ['tailable' => true]);
| Failure Scenario | Impact | Mitigation |
|---|---|---|
| MongoDB driver version mismatch | Crashes or silent failures | Pin driver version in composer.json |
| Cursor timeout (inactive collection) | Stalled jobs | Implement heartbeat pings |
| ODM entity changes | Query failures | Feature flags for backward compatibility |
| Laravel cache/queue issues | Event processing delays | Fallback to direct DB polling |
| MongoDB replica set splits | Cursor invalidation | Use primaryPreferred read preference |
next(), killCursor(), and timeouts.How can I help you explore Laravel packages today?