序文 ActiveMQ は、Apache が開発した最も人気があり強力なオープン ソース メッセージ バスです。 ActiveMQ は、JMS1.1 および J2EE 1.4 仕様を完全にサポートする JMS プロバイダー実装です。JMS 仕様は長い間導入されてきましたが、今日の J2EE アプリケーションでは JMS が依然として特別な役割を果たしています。 実稼働プロジェクトでは、分散システム間の通信にメッセージ ミドルウェアが必要になることがよくあります。低結合、信頼性の高い配信、ブロードキャスト、フロー制御、最終的な一貫性などの一連の機能を備えています。この記事では、主に ActiveMQ の概念とインストール手順を紹介します。その後、スパイク メッセージ キューを実装するための SpringBoot 統合に焦点を当てます。 コンセプト JMS メッセージ モード ポイントツーポイントまたはキューモード メッセージ キュー (Queue)、送信者 (Sender)、受信者 (Receiver) の 3 つの役割が含まれます。各メッセージは特定のキューに送信され、受信者はキューからメッセージを取得します。キューは、メッセージが消費されるかタイムアウトになるまでメッセージを保持します。
パブリッシュ/サブスクライブ トピック、パブリッシャー、サブスクライバーの 3 つのロールが含まれます。複数のパブリッシャーがトピックにメッセージを送信し、システムはこれらのメッセージを複数のサブスクライバーに配信します。
このような厳密な時間依存性を緩和するために、JMS ではサブスクライバーが永続サブスクリプションを作成できるようにしています。この方法では、サブスクライバーがアクティブ化されていない (実行されていない) 場合でも、パブリッシャーからメッセージを受信できます。 送信されたメッセージを一切処理しない、1 人の送信者のみによって処理する、または複数のコンシューマーによって処理する場合は、Pub/Sub モデルを使用できます。 JMSメッセージの基本コンポーネント 接続ファクトリー Connection オブジェクトを作成するためのファクトリは 2 つあります。2 つの異なる JMS メッセージ モデル用の QueueConnectionFactory と TopicConnectionFactory です。 ConnectionFactory オブジェクトは JNDI を通じて見つかります。 行き先 宛先とは、メッセージ プロデューサーのメッセージの宛先、またはメッセージ コンシューマーのメッセージのソースを意味します。メッセージ プロデューサーの場合、その宛先はキューまたはトピックです。メッセージ コンシューマーの場合、その宛先もキューまたはトピック (つまり、メッセージのソース) です。 したがって、Destination は実際には Queue と Topic の 2 種類のオブジェクトです。Destination は JNDI を通じて見つけることができます。 繋がり 接続は、クライアントと JMS システム (TCP/IP ソケットのラッパー) の間に確立されたリンクを表します。接続は 1 つ以上のセッションを生成できます。 ConnectionFactory と同様に、Connection にも QueueConnection と TopicConnection の 2 つのタイプがあります。 セッション セッションはメッセージを操作するためのインターフェースです。プロデューサー、コンシューマー、メッセージなどはセッションを通じて作成できます。セッションはトランザクション機能を提供します。セッションを使用して複数のメッセージを送受信する必要がある場合は、これらの送受信アクションをトランザクションに組み込むことができます。同様に、QueueSession と TopicSession にも分割されます。 メッセージのプロデューサー メッセージ プロデューサーはセッションによって作成され、宛先にメッセージを送信するために使用されます。同様に、メッセージ プロデューサーには QueueSender と TopicPublisher の 2 種類があります。メッセージを送信するには、メッセージ プロデューサーのメソッド (send メソッドまたは publish メソッド) を呼び出すことができます。 メッセージコンシューマー メッセージ コンシューマーは、宛先に送信されたメッセージを受信するためにセッションによって作成されます。 2 つのタイプ: QueueReceiver と TopicSubscriber。それぞれセッションの createReceiver(Queue) または createSubscriber(Topic) を通じて作成できます。もちろん、セッションの createDurableSubscriber メソッドを使用して永続サブスクライバーを作成することもできます。 メッセージリスナー メッセージリスナー。メッセージ リスナーが登録されている場合、メッセージが到着すると、リスナーの onMessage メソッドが自動的に呼び出されます。 EJB の MDB (Message-Driven Bean) は MessageListener の一種です。 輸送 ActiveMQ は現在、VM トランスポート、TCP トランスポート、NIO トランスポート、SSL トランスポート、ピア トランスポート、UDP トランスポート、マルチキャスト トランスポート、HTTP および HTTPS トランスポート、WebSocket トランスポート、フェイルオーバー トランスポート、ファンアウト トランスポート、検出トランスポート、ZeroConf トランスポートなどのトランスポートをサポートしています。
持続性 AMQ メッセージ ストア ActiveMQ 5.0 のデフォルトの永続ストレージ方法。 カハ・パーシスタンス これはメッセージの永続化に特化したソリューションです。一般的なメッセージング使用パターンに合わせて最適化されています。 JDBC 永続性 現在サポートされているデータベースは、Apache Derby、Axion、DB2、HSQL、Informix、MaxDB、MySQL、Oracle、Postgresql、SQLServer、Sybase です。 永続性を無効にする 永続ストレージは使用されません。 クラスターソリューション(マスター/スレーブ) 純粋なマスタースレーブ
共有ファイルシステム マスター スレーブ JDBC マスター スレーブ
インストール手順 ここでのインストールには Docker が使用され、Docker イメージをクエリします。 docker 検索 activemq Docker イメージをダウンロードします。 docker pull webcenter/activemq ActiveMQ コンテナを作成して実行します。 docker run -d --name myactivemq -p 61617:61616 -p 8162:8161 webcenter/activemq 61616 は activemq コンテナが使用するポート (61617 にマップ)、8161 は Web ページ管理ポート (外部では 8162 にマップ) 作成されたコンテナを確認します。存在する場合、インストールは成功です。 ドッカーps WEB管理ページを表示: ブラウザに http://ip:8162 と入力し、「ActiveMQ ブローカーの管理」をクリックして、デフォルトのアカウント/パスワード: admin/admin を使用して表示します。 アクセスパスワードを設定する Docker コンテナに入ります: docker exec -it myactivemq /bin/bash コンソール インターフェイスでユーザー名とパスワードを設定します。 # ルートディレクトリのconfディレクトリにあるvi jetty-realm.properties # パスワードの変更# ユーザー名: パスワード [,ロール名 ...] 管理者: 管理者、管理者 接続パスワードを設定する activemq.xml ファイルを編集し、shutdownHooks の下に配置します。 <!-- ActiveMQ にアクセスするためのアカウントとパスワードを追加します--> <プラグイン> <シンプル認証プラグイン> <ユーザー> <authenticationUser ユーザー名="${activemq.username}" パスワード="${activemq.password}" グループ="users,admins"/> </ユーザー> </シンプル認証プラグイン> </プラグイン> パスワードを設定するには、conf 内の credentials.properties ファイルを変更します。 activemq.username=管理者 アクティブMQパスワード=123456 ゲストパスワード=123456 予防 クラウドサーバーの場合は、関連するポート(61617/8160)を開くことを忘れないでください。 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: Linux (Ubuntu) での MySQL 5.6.28 のインストールと設定のチュートリアル
目次1. テレポート1.1 テレポートの紹介1.2 テレポートの使用1.3 プレビュー効果2. サス...
プロジェクトのテスト環境データベースのデータが失われてしまったので、記録しておきたいと思います。当時...
新しい Linux ディストリビューションには rc.local ファイルがなくなりました。サービス...
1. 表タグはtable、trは行、tdはセル、cellspacingはセル間の距離、cellpad...
CentOS 6.4 環境で MySQL 5.1 を 5.5.36 にアップグレードする手順を記録し...
最近、宿題をしているときに、iframe を使用せずにページをネストする必要があったため、jquer...
目次序文プロミスチェーンMDN エラー連鎖デフォルト処理略語非同期待機序文この記事を書いた理由は、ユ...
導入近年、TypeScript を求める声がますます高まり、TypeScript はフロントエンドに...
目次概要オブザーバーパターンの応用シナリオオブザーバーパターンの実装要約する概要オブザーバー パター...
基本的なネットワーク構成Docker はイメージに基づいて複数のコンテナを「開く」ことができ、各コン...
最近、cronスケジュールタスク用のdockerを作りたいと思っており、Dockerfileで次のよ...
目次概要解決策 1: クロージャ解決策2: 構造を分割する解決策3:解決策4: setTimeout...
この記事では、キャンバスを使用してWeChatアプレットに時計を描く具体的なコードを参考までに共有し...
目次1. まずRefとは何かを説明しましょう2. フックでのrefの使用1. HTMLDomフックで...
「ウェブサイトを高級感のあるものにするにはどうすればいいでしょうか? それともデザイン重視にすればい...