2017-11-08 10 views
0

Googleコンテナエンジン用のクラスタで、カスタムでスケーラブルなタスクキューを開発するための移植可能な方法を見つけようとしています。これはシナリオです。フロントエンドでノードjsインスタンスのユーザーの詳細を取得するシナリオです。これらの詳細はapiシステムに送信され、dbに連絡してユーザーの詳細を保存し、ウェルカムメールを送信する予定です。 私の問題は、私は同じメールエンドポイントのメソッドを使用してメールの送信リクエストを処理したくないので、私はkubernetesインフラストラクチャでそれをどのように処理する必要があるのか​​を別のプロセスで処理する必要がありますか?私がこれを行うと、すべてのサブスクリプションにアップデートが通知されますが、サブシステムのインスタンスが2つ実行されている場合は、変更がすべて観察され、メールが2回送信されます。これに関する考えやアイディアは高く評価されます。Googleコンテナエンジンの非同期タスクキュー

答えて

1

これには2つの合理的な方法があります。

1:APIを使用して郵送イベントを受け取り、受け取った直後に郵送を非同期で処理するサービスがあります。 kubeサービスを使用すると、そのようなサービスの1つだけがヒットし、1つのメールは呼び出しサービスのための非ブロック的な方法で送信されますが、それには欠点があります。もし何かが失敗した場合、メールはまったく生成されないかもしれません。

2:おそらく(Kafka、Rabbitなど)いくつかのMQに行き、任意の数のメーリングサービスインスタンスがメッセージキューを消費し、メッセージを受け取ることができることを確認し、メッセージが返されない場合は処理に戻ります

+0

"メッセージを受け取れるのは1人だけで、メッセージがない場合は処理に戻す必要があります。すべてが同じトピックを購読しているので、インスタンスによって1つだけが選択されるようにしてください。これは、私のサブスクライバのインスタンスを常に1つだけ実行させる必要があるということですか? –

+0

異なるブローカーでは異なる名前が付けられていますが、一般的に私が知っているすべてのブローカーは、複数のコンシューマーとユニークなメッセージを1人の消費者に配信する方法でメッセージを配信します。 –

+0

私は、オーバーヘッド –

関連する問題