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