Stratégies d'atténuation des conditions de concurrence des webhooks

Salut à tous ! :waving_hand:

Je travaille sur la création d’une synchronisation bidirectionnelle entre Discourse et Discord. Du côté de Discourse, j’utilise des webhooks pour les événements de sujets et de messages (créés, modifiés, supprimés, récupérés) afin de relayer les mises à jour vers les canaux Discord correspondants. L’autre direction est gérée à l’aide d’un bot construit avec discord.js.

J’ai rencontré quelques problèmes pour que mon middleware gère les choses proprement — principalement en raison d’une condition de concurrence entre la réception des webhooks de sujets et de messages.

J’aimerais avoir quelques conseils sur la meilleure façon de gérer cela. Pour l’instant, j’envisage de supprimer complètement les webhooks de sujets et de baser tout sur les événements de messages (en utilisant topic_id comme unificateur). Cela dit, je préférerais trouver un moyen de faire fonctionner ma configuration actuelle plutôt que de tout réécrire à partir de zéro.

Vos éclaircissements ou suggestions seraient grandement appréciés ! :folded_hands:

3 « J'aime »

Je viens de décider de récupérer les valeurs et de remplir certaines données avant d’avoir le sujet dans ma base de données.

1 « J'aime »

Est-ce que vous recevez le webhook post avant le webhook topic ? Compte tenu de la nature asynchrone de cela, cela peut effectivement arriver.

2 « J'aime »

C’est donc que je faisais à la fois des webhooks de sujet et de publication, mais je suis passé aux webhooks de publication uniquement et j’utilise ce qui est disponible dans ceux-ci pour lier les fils de discussion aux sujets.

2 « J'aime »

C’est un bon changement, cela rendra votre système beaucoup plus fiable et, comme vous l’avez dit, vous pouvez toujours recourir aux requêtes API pour enrichir les données.

2 « J'aime »