この記事では、主に Java メッセージ キューの簡単な実装コードを紹介します。編集者がそれを参考にさせていただきます。編集者をフォローして見てみましょう
今日、採用情報にメッセージキューの要件があるのを見て、思い立ってネットでいろいろ検索しました。
アプリケーションのシナリオを説明するための小さな例を示します
サーバーの処理能力は 1 分あたり 200 メッセージですが、クライアントはピーク時に 1 分あたり 1,000 メッセージを送信する可能性があるとします。時間に応じてキューに入れてから、通常の順序、先入れ後出し (LIFO)、先入れ先出し (FIFO) で処理することができます。自分の状況に応じて決定できます
スタック 先入れ後出しout (LIFO)- -------Java の対応クラス Stack
キュー先入れ先出し (FIFO)----------Java の対応クラス Queue
これらは両方とも可能です以下のようにLinkedlistでカプセル化して実装しました 自分で書いたスタックの例です
/** * @author 刘伊凡 * --------->>>>>>队列的实现-------------- */ public class MyStack<T> { private LinkedList<T> storage = new LinkedList<T>(); public synchronized void push(T e) {//需要加上同步 storage.addFirst(e); } public T peek() { return storage.getFirst(); } public void pop() { storage.removeFirst(); } public boolean empty() { return storage.isEmpty(); } @Override public String toString() { return storage.toString(); } }
以下はテストクラスです
/** * @author 刘伊凡 * */ public class StackTest { public static void main(String[] args) { MyStack<String> stack = new MyStack<String>(); for(String s : "the prefect code".split(" ")){//LIFO stack.push(s); } while(!stack.empty()){ System.out.print(stack.peek()+" "); stack.pop(); } System.out.println(); for(char s : "写了个一句话倒起来说的程序".toCharArray()){//用例:正话反说 stack.push(String.valueOf(s)); } while(!stack.empty()){ System.out.print(stack.peek()); stack.pop(); } } }
昔、学校で考えさせられました。夜のパーティーでは、司会者が人々をステージに上げて質問に答え、賞品を獲得させます。その質問の 1 つは、司会者が発言し、その後、出場者たちに起立して私たちのプログラムが一致していると言うよう求めるというものでした。ニーズがあります、笑、Java を使用して学んだことをチートして適用できます
メッセージ キュー アプリケーションのシナリオ、補足 (インターネットから)
個人的には、メッセージ キューの主な機能は非同期処理だと思います。主な目的は、リクエストの応答時間と分離を削減することです。したがって、主な使用シナリオは、時間がかかり、結果をメッセージとして即時 (同期) 返す必要のない操作をメッセージ キューに入れることです。同時に、メッセージ キューの使用により、メッセージの形式が変更されない限り、メッセージの送信者と受信者は相互に連絡したり、相互に影響を受けたりする必要がなくなります。つまり、分離や要約が必要になります。
使用シナリオの例:
ユーザーがソフトウェアに登録すると、サーバーはユーザーの登録リクエストを受信した後、次の操作を実行します:
そうでない場合は、ユーザー名とその他の情報を確認します。データベースにユーザーレコードを追加します
メールで登録すると、登録が完了したことを示すメールが送信されます
携帯電話で登録すると、テキストメッセージが送信されます
ユーザーの個人情報を順番に分析します。今後彼に何かを勧めたい同じ考えの人、またはその人たちに彼を勧めます
操作ガイドを含むシステム通知をユーザーに送信
etc...
しかしユーザーにとっては登録機能実際に必要なのは、サービスが提供されている限り、最初のステップだけです。ユーザーは自分のアカウント情報をデータベースに保存した後、ログインして必要な操作を行うことができます。その他のことについては、このリクエストで完了する必要がありますか?ユーザーにとって重要ではない事柄にあなたが対処してくれるまで待つ価値はあるでしょうか?したがって、実際には、最初のステップが完了すると、サーバーは他の操作を対応するメッセージ キューに入れて、すぐにユーザー結果を返すことができ、メッセージ キューはこれらの操作を非同期で実行します。 あるいは、多数のユーザーが同時にソフトウェアに登録する別の状況もあり、同時実行性が高い状況では、登録リクエストに電子メール インターフェイスが耐えられない、または大量の計算が発生するなどの問題が発生し始めます。情報を分析すると CPU がいっぱいになります。ユーザー データ レコードはすぐにデータベースに追加されますが、電子メールの送信や情報の分析中にスタックして、リクエストの応答時間が大幅に増加したり、タイムアウトになったりすることがあります。ちょっと不経済です。この状況に直面して、これらの操作は通常、メッセージ キューに入れられます (プロデューサー/コンシューマー モデル)。メッセージ キューは処理に時間がかかりますが、同時に、ユーザーによる他の機能の使用に影響を与えることなく、登録要求を迅速に完了できます。 🎜🎜そのため、ソフトウェアの通常の機能開発では、わざわざメッセージキューの使用シナリオを探す必要はなく、パフォーマンスのボトルネックが発生した場合に、ビジネスロジックに処理可能な時間のかかる操作があるかどうかを確認します。その場合は、メッセージ キューを導入してこの問題を解決できます。そうしないと、メッセージ キューをやみくもに使用すると、メンテナンスと開発のコストが増加する可能性がありますが、パフォーマンスの大幅な向上は達成できず、利益に見合う価値はありません。 🎜以上がJavaでのメッセージキューのサンプルコード共有の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

この記事では、Javaプロジェクト管理、自動化の構築、依存関係の解像度にMavenとGradleを使用して、アプローチと最適化戦略を比較して説明します。

この記事では、MavenやGradleなどのツールを使用して、適切なバージョン化と依存関係管理を使用して、カスタムJavaライブラリ(JARファイル)の作成と使用について説明します。

この記事では、カフェインとグアバキャッシュを使用してJavaでマルチレベルキャッシュを実装してアプリケーションのパフォーマンスを向上させています。セットアップ、統合、パフォーマンスの利点をカバーし、構成と立ち退きポリシー管理Best Pra

この記事では、キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPAを使用することについて説明します。潜在的な落とし穴を強調しながら、パフォーマンスを最適化するためのセットアップ、エンティティマッピング、およびベストプラクティスをカバーしています。[159文字]

Javaのクラスロードには、ブートストラップ、拡張機能、およびアプリケーションクラスローダーを備えた階層システムを使用して、クラスの読み込み、リンク、および初期化が含まれます。親の委任モデルは、コアクラスが最初にロードされ、カスタムクラスのLOAに影響を与えることを保証します

この記事では、分散アプリケーションを構築するためのJavaのリモートメソッドの呼び出し(RMI)について説明します。 インターフェイスの定義、実装、レジストリのセットアップ、およびクライアント側の呼び出しを詳述し、ネットワークの問題やセキュリティなどの課題に対処します。

この記事では、ネットワーク通信のためのJavaのソケットAPI、クライアントサーバーのセットアップ、データ処理、リソース管理、エラー処理、セキュリティなどの重要な考慮事項をカバーしています。 また、パフォーマンスの最適化手法も調査します

この記事では、カスタムJavaネットワーキングプロトコルの作成を詳述しています。 プロトコルの定義(データ構造、フレーミング、エラー処理、バージョン化)、実装(ソケットを使用)、データシリアル化、およびベストプラクティス(効率、セキュリティ、メンテナ


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

WebStorm Mac版
便利なJavaScript開発ツール

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター
