2016-06-02 13 views
1

私はKoaウェブサイトと、Koaウェブサイト上で動作するAngular.jsからのリクエストを受け取るAPIを含むNodejs + Koaアプリケーションを作成しました。Nodejs + KoaアプリケーションでAWS SQSメッセージポーリングを使用する必要がありますか?

AWS SQSサービスを使用して、アプリケーションからメッセージをプッシュします。これらのメッセージは、AWSラムダ関数によって処理されます。ラムダ関数が作業を完了すると、メッセージを別のSQSキューにプッシュします。 Nodejsアプリケーションは、メッセージのSQSキューをポーリングし、メッセージがある場合、ステータスレポートをユーザーに送信します。

私はSQSのドキュメントを赤色にしており、スレッドをブロックするので、単一のスレッドアプリケーションで長いポーリングを使用することはお勧めしません。

短いポーリングを5~10秒間隔で使用することをお勧めしますか?これによりウェブサイトのパフォーマンスが大幅に低下する可能性はありますか?これにはベストプラクティスがありますか?

答えて

2

私は別のプロセスにレポート機能を分離することをお勧めしますが。(懸念は分離保ちます)

私も長いポーリングは、アプリケーションのパフォーマンスへの影響に悪影響を与えるだろう、とは思いません。

シングルスレッドアプリケーションについてはどんなSQSでもtrueですが、nodejs上に構築されたアプリケーションの場合は適用されません。長いポーリングでSQSの受信メッセージapiを使用すると、サーバー上で待機が発生し、クライアントAPIは非同期になります。

Nodejsはイベントループメカニズムを利用し、メッセージの取得中は他の処理を続行できます。クライアント上でメッセージが受信された場合にのみ、コールバックが呼び出され、プロセスがブロックされます。

処理に時間がかかる場合を除き、全体的な処理に悪影響が及ぶとは思いません。

+0

現在、私はchild_processを作成するnodejsモジュールに取り組んでいます。プロセスは、長いプーリングを使用してSQSメッセージをプールし、メッセージデータを親プロセスに送信します。 –

+0

gr8。本当の懸念はありません。私は常にポーリングをアドバイスし、コストとネットワーク帯域幅を節約します。 – Shibashis

関連する問題