優先度メッセージ(AMQPなど)を一貫してサポートしないメッセージ指向のミドルウェアの場合、キューがFIFOセマンティクスのみを持つ場合に優先消費を実装する最適な方法?一般的なユースケースは、メッセージの大きなバックログがキューに存在する場合に、優先度の低いメッセージの前に優先度の高いメッセージを受信するシステムです。FIFO Qeueingシステムでは、優先メッセージングを実装する最良の方法は何ですか
答えて
与えられた単一のキューに対してのみFIFOサポートが与えられた場合、もちろん、複数のキュー、仲介者のいずれかを導入するか、より複雑なコンシューマを持つ必要があります。
複数のキューは、いくつかの方法で処理できます。プロデューサとコンシューマは、優先度の高いキューとバックグラウンドタスクのキューの2つのキューを持つことに同意できます。
プロデューサが1つのキューに制限されていてもコンシューマを制御できる場合は、パスにファンアウトルータを導入することを検討してください。プロデューサ→ルータは単一のキューであるため、ルータは消費者に対して2つのキューを持っています。
これに対処するもう一つの方法は、消費者に待ち行列の前でスレッドをスピンさせ、次に内部的に作業をディスパッチさせることです。上記のルータバージョンのようなものですが、1つのアプリ内にあります。これには、アプリ内で複数のメッセージが飛んでいるという欠点があります。これは、エラーが発生した場合の復旧を複雑にする可能性があります。
優先度が高いイベントがまだぶら下がっていても、そのうちのいくつかを処理する必要がある場合は、効果的に優先度の低いイベントの枯渇を考慮する必要があります。
これは、仕事中のプロジェクトに対してこの戦略を実装した人の多かれ少なかれです。優先度の高いシステムの複数のキュー。このような場合、重要度の低い重要度の低いメッセージを優先度の高いものとして再発行するだけで済みますので、飢餓についてはあまり心配しません。重複して作業が行われるのは、ほとんどの場合、これを可能にすることです。 – quaternion
- 1. hapi.jsでウェブサイトのユーザログインシステムを実装する最良の方法は何ですか?
- 2. C#でモナドを実装する最良の方法は何ですか
- 3. SpringセキュリティでRESTを実装する最良の方法は何ですか?
- 4. LAN上でデバイスディスカバリを実装する最良の方法は何ですか
- 5. ユニティビリヤードゲームでマルチプレイヤーを実装する最良の方法は何ですか?
- 6. Androidで「スタブ」を実装する最良の方法は何ですか?
- 7. grailsでログインシステムを実装する最良の方法は何ですか
- 8. .NETでこれを実装する最も良い方法は何ですか?
- 9. angle2ルータでスワイプナビゲーションを実装する最も良い方法は何ですか?
- 10. iOSアプリでフォルダを実装する最も良い方法は何ですか?
- 11. Azureデータベースでマルチテナントを実装する最も良い方法は何ですか
- 12. tensorflowで3Dコンボリューションを実装する最も良い方法は何ですか?
- 13. Java 8でカウンタを実装する最も良い方法は何ですか?
- 14. Railsアプリケーションでスキニングを実装する最も良い方法は何ですか
- 15. Webサービスのログインを実装する最良の方法は何ですか?
- 16. paypalのクレジットを実装する最良の方法は何ですか
- 17. アプリに多言語を実装する最良の方法は何ですか?
- 18. リンクを実装する最良の方法は何ですか?yii2 - > React js?
- 19. 「人気コンテンツ」ディスプレイを実装する最良の方法は何ですか?
- 20. 水平スクロールカルーセルコンポーネントを実装する最良の方法は何ですか?
- 21. JettyにHTTP2サーブレットを実装する最良の方法は何ですか?
- 22. プッシュ通知システムを実装する最良の方法
- 23. 優先度キューを実装するプログラマのデフォルト選択は何ですか?
- 24. 変更可能なオブジェクトの優先度キュー:それらを実装するための最良の方法は何ですか?
- 25. HATEOASのリンクリレーションシップをXMLで実装する最良の方法は?
- 26. WordPressのウェブサイトでCDNを実装する最良の方法は?
- 27. Railsアプリケーションで投票を実装する最良の方法は?
- 28. 優先度値をフィルタリングする最良の方法
- 29. "カップル"システムをレールで行う最良の方法は何ですか?
- 30. javascriptでキューを実装する最も良い方法は?
複数のキューを使用できますか?もしそうなら、優先順位キューが空の場合にのみ使用される標準キューの前に最初に照会される高優先順位メッセージ用の別個のキューを持つことをお勧めします。それがあなたのシナリオに合っているかどうかは分かりませんが、それが私の最初のアイディアでした。 – CodeFusionMobile
私はCSharpWithJavaに同意します。私は現時点で大きなメッセージングアプリケーションをやっています。あなたの質問から、複数のキューが必要だと思うので、低いプライオリティのメッセージを下位のキューに降ろして、すぐにハイプライを読むことができます。 –