Zend Framework 3 的队列管理器建议
Queue manager recommendations for Zend Framework 3
我们目前正在将我们的系统从 ZF2 迁移到 ZF3。在 ZF2 中,为了在后台排队 long/resource 个贪心作业,我们使用 SlmQueue 和 SlmQueueBeanstalkd Adapter。然而,事实证明SlmQueueBeanstalkd不再维护,这导致我们因为依赖冲突而无法升级。
你能为我提供需要对代码进行合理更改的好的替代方案吗?
我正在考虑 SlmQueueDoctrine,因为它似乎得到了维护,并且在某种程度上与我们当前的堆栈相当。
我们最终使用了 SlmQueueDoctrine,它只需要很少的代码更改:
简而言之:
我们的作业需要实现 ObjectManagerAwareInterface,它具有队列管理器内部使用的对象管理器的 setter 和 getter。我们需要通过构造函数在我们的每个作业中注入对象管理器。
/** @var ObjectManager $entityManager */
$entityManager = $container->get('doctrine.entitymanager.orm_default');
return new Job($entityManager);
为了使上述工作正常,我们在 application.config
中启用了 DoctrineModule、DoctrineORMModule 和 SlmQueueDoctrine
之后,我们在 config.local 和 config.global 中配置我们的队列。我不会把配置放在这里,因为它们有点大。我推荐阅读 SlmqueueDoctrine 的 README.md 和 Slmqueue 的文档。
我们目前正在将我们的系统从 ZF2 迁移到 ZF3。在 ZF2 中,为了在后台排队 long/resource 个贪心作业,我们使用 SlmQueue 和 SlmQueueBeanstalkd Adapter。然而,事实证明SlmQueueBeanstalkd不再维护,这导致我们因为依赖冲突而无法升级。
你能为我提供需要对代码进行合理更改的好的替代方案吗?
我正在考虑 SlmQueueDoctrine,因为它似乎得到了维护,并且在某种程度上与我们当前的堆栈相当。
我们最终使用了 SlmQueueDoctrine,它只需要很少的代码更改:
简而言之: 我们的作业需要实现 ObjectManagerAwareInterface,它具有队列管理器内部使用的对象管理器的 setter 和 getter。我们需要通过构造函数在我们的每个作业中注入对象管理器。
/** @var ObjectManager $entityManager */
$entityManager = $container->get('doctrine.entitymanager.orm_default');
return new Job($entityManager);
为了使上述工作正常,我们在 application.config
中启用了 DoctrineModule、DoctrineORMModule 和 SlmQueueDoctrine之后,我们在 config.local 和 config.global 中配置我们的队列。我不会把配置放在这里,因为它们有点大。我推荐阅读 SlmqueueDoctrine 的 README.md 和 Slmqueue 的文档。