Webhook の競合状態緩和戦略

皆さん、こんにちは!:waving_hand:

現在、DiscourseDiscord の間で双方向同期を構築しています。Discourse 側では、トピックと投稿のイベント(作成、編集、削除、復元)に対して Webhook を使用して、Discord の対応するチャンネルに更新を中継しています。逆方向は、discord.js で構築されたボットを使用して処理しています。

現在、トピックと投稿の Webhook が受信されるタイミングの競合状態が原因で、ミドルウェアでクリーンに処理するのに苦労しています。

この問題を最も効果的に処理する方法について、いくつかアドバイスをいただけると幸いです。現在、トピックの Webhook を完全にドロップし、すべての処理を投稿イベント(topic_id を統一キーとして使用)に基づいて行うことを検討しています。ただし、すべてをゼロから書き直すのではなく、現在のセットアップが機能する方法を見つけたいと考えています。

何か洞察や提案があれば、大歓迎です!:folded_hands:

「いいね!」 3

データベースにトピックを格納する前に、値を取得してデータを入力することにしました

「いいね!」 1

これは、postWebhookがtopicWebhookよりも先に受信されているということですか?非同期の性質を考えると、実際に起こりうることです。

「いいね!」 2

そのため、トピックと投稿の両方のWebhookを実行していましたが、投稿Webhookのみを使用し、それらで利用可能な機能を使用してスレッドをトピックにリンクするように変更しました。

「いいね!」 2

それは良い変更ですね。システムがはるかに信頼性が高くなり、おっしゃったように、APIリクエストでデータを強化することもできます。

「いいね!」 2