Projet

Général

Profil

Development #26961

Mis à jour par Frédéric Péters il y a plus de 5 ans

Sur une configuration avec tous les services sur une même machine, un seul rabbitmq, et du multi-publik, mettre un usager dans un rôle provoque :

<pre>
{u'audience': [u'https://agendas-collectivite1/accounts/mellon/metadata/', u'https://demarches-collectivite1/saml/metadata', u'https://passerelle-collectivite1/accounts/mellon/metadata/', u'https://collectivite1/accounts/mellon/metadata/', u'https://agents-collectivite1/accounts/mellon/metadata/'], u'full': False, u'@type': u'provision', u'objects': {u'data': [{u'emails_to_members': True, u'description': u'', u'name': u'Debug XXX', u'emails': [], u'details': u'', u'slug': u'debug-...', u'uuid': u'f47e68deb0e34dcabd573e3f243e59b7'}], u'@type': u'role'}}
</pre>

reçu pour les n applications, donc n fork() pour faire des hobo_notify, alors qu'il n'y a pas eu de changement sur le rôle.

Puis,

<pre>
{u'audience': [u'https://hobo-collectivite3.toodego.com/accounts/mellon/metadata/'], u'full': False, u'@type': u'provision', u'objects': {u'data': [{u'last_name': ...
</pre>

envoyé n fois, avec n = le nombre de services où l'usager a un rôle, donc à imaginer un admin chez nous, tous les services, donc hobo/combo/passerelle/wcs/bijoe/etc. * nombre de collectivités, = rapidement quelques dizaines de fork().

En comptant entre une et deux secondes par appel à hobo_notify, et une durée de vie du message rabbitmq à 120 secondes, il suffit d'un peu de traffic sur le bus et on perd des messages.

Différentes pistes donc :

* ne pas transmettre sur le bus des messages pour un rôle qui n'a pas bougé.
* améliorer la vitesse d'un hobo_notify.
* merger les messages vers différentes audiences quand le contenu est identique.
* étudier davantage rabbitmq, peut-être y a-t-il moyen de faire une queue par service, et qu'on puisse configurer pour avoir des workers par queue pour gagner une concurrence dans les traitements (par service, comme quand on les fait tourner sur différents serveurs)
*
?

Retour