Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 28-05-2015 10:45:15

JGreco
Administrateur
Date d'inscription: 22-12-2012
Messages: 432

SlmQueueDoctrine et Zf2

Bonjour,

J'essaye tant bien que mal de construire dans mon projet tout une partie de Jobs pour ne pas bloquer mes utilisateur avec des traitements long..

J'ai un Job mail qui possède une dépendance à un service. (qui couvre une méthode d'envoi de mail de façon plus poussé multi envois, pièce jointe etc...). Si je démarre mon worker, rien ne se passe. Après quelques recherches je me rend compte qu'il me faut une stratégie sous la clé

Code:

[lang=php]
        'strategy_manager' => array(
            'factories' => array(
                'Application\Job\EmailJob' => 'Application\Factory\EmailJobFactory',
            )
        ),

La j'ai une erreur, mon job est appelé mais sa dépendance de constructeur n'est pas chargée. Surement car ma factory est une simple factory et le job n'implemente pas Abstract Strategy... bref je me suis un peu paumé dans la doc j'aurais aimé un coup de main m'expliquant mes erreurs et ce que je dois faire pour que ça marche.

Mon worker spécifie une stratégie basique par défaut

Code:

[lang=php]
        'worker_strategies' => array(
            'doctrineQueue' => array( // per worker
            ),
            'queues' => array( // per queue
                'doctrineQueue' => array(
                    'SlmQueue\Strategy\ProcessQueueStrategy',
                ),
            ),
        ),

Merci d'avance pour votre temps smile


ZF2 et doctrine addict
profil stack overflow : http://stackoverflow.com/users/3333246/ … ab=profile

Hors ligne

 

#2 28-05-2015 11:33:37

JGreco
Administrateur
Date d'inscription: 22-12-2012
Messages: 432

Re: SlmQueueDoctrine et Zf2

Bon j'avais fait n'importe quoi. La solution est toute bête pour gérer l'injection de dépendance lors d'un job.

crééer son job avec le constructeur et la dépendance (extend AbstractJob) Il est toujours utile de lui joindre l'implémentation de ObjectManagerAwareInterface, QueueAwareInterface (les traits de ces deux interfaces existent).

Ensuite faire une factory standard, attention, le service locator se récupère de la même manière que pour les contrôleurs.
donc

Code:

[lang=php]
$serviceLocator = $parentLocator->getServiceLocator();

Dans la configuration de SlmQueue penser a ajouter vos factory sous la clé :

Code:

[lang=php]
        'job_manager' => array(
            'factories' => array(
                'Application\Job\EmailJob' => 'Application\Factory\EmailJobFactory',
            )
        ),

Ce qui vous assure avec le fqcn que votre factory sera bien trouvé par le worker(mon erreur venait surtout du fait que je n'avais pas mis le Fqcn dans la clé mais Email\Job.

et c'est tout. La doc explique très bien le tout quand on arrive a y retrouver ses petits !


ZF2 et doctrine addict
profil stack overflow : http://stackoverflow.com/users/3333246/ … ab=profile

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages