DockerにRocketMQをインストールするための実装手順

DockerにRocketMQをインストールするための実装手順

1. 画像を取得する

docker 検索 rocketmq 

特定のバージョンを取得する

curl https://registry.hub.docker.com/v1/repositories/foxiswho/rocketmq/tags | tr -d '[\[\]" ]' | tr '}' '\n' | awk -F: -v image='foxiswho/rocketmq' '{if(NR!=NF && $3 != ""){printf("%s:%s\n",image,$3)}}' 

現在のイメージ シェル コマンドのすべてのバージョンを表示する

カール https://registry.hub.docker.com/v1/repositories/foxiswho/rocketmq/tags\
| tr -d '[\[\]" ]' | tr '}' '\n'\
| awk -F: -v image='foxiswho/rocketmq' '{if(NR!=NF && $3 != ""){printf("%s:%s\n",image,$3)}}' 

2. ブローカーサーバーを作成する

docker run -d -p 9876:9876 --name rmqserver foxiswho/rocketmq:server-4.5.1 

3. ブローカーを作成する

docker run -d -p 10911:10911 -p 10909:10909\
 --name rmqbroker --link rmqserver:namesrv\
 -e "NAMESRV_ADDR=namesrv:9876" -e "JAVA_OPTS=-Duser.home=/opt"\
 -e "JAVA_OPT_EXT=-server -Xms128m -Xmx128m"\
 foxiswho/rocketmq:ブローカー-4.5.1 

broker.conf を構成する

rmqbrokerコンテナに入る

docker exec -it rmqbroker /bin/bash

/etc/rocketmq/ をコピーします

vi ブローカー.conf

4. RocketMQコンソールを作成する

docker run -d --name rmqconsole -p 8180:8080 --link rmqserver:namesrv\
 -e "JAVA_OPTS=-Drocketmq.namesrv.addr=namesrv:9876\
 -Dcom.rocketmq.sendMessageWithVIPChannel=false"\
 -t スタイルタン/ロケットMQコンソール

次に、次のコマンドで起動ステータスを確認します。

docker ps | grep rocketmq

http://192.168.23.131:8180/

5. テスト

ホストマシンに rocketmq をインストールしたので、テストは次のようになります。

#テストメッセージ送信コマンド sh tools.sh org.apache.rocketmq.example.quickstart.Producer 

#テストメッセージ受信コマンド sh tools.sh org.apache.rocketmq.example.quickstart.Consumer

6. Javaサンプル

<依存関係>
	    <グループ ID>org.apache.rocketmq</グループ ID>
	    <artifactId>rocketmq-client</artifactId>
	    <バージョン>4.9.2</バージョン>
	</依存関係>

メッセージ送信(プロデューサーが同期メッセージを送信)

org.apache.rocketmq.client.producer.DefaultMQProducer をインポートします。
org.apache.rocketmq.client.producer.SendResult をインポートします。
org.apache.rocketmq.common.message.Message をインポートします。
org.apache.rocketmq.remoting.common.RemotingHelper をインポートします。
 
 
パブリッククラスSyncProducer {
	パブリック静的void main(String[] args)は例外をスローします{
    	// メッセージプロデューサーをインスタンス化する
        DefaultMQProducer プロデューサー = 新しい DefaultMQProducer("zhuzeqing-1");
    	// NameServer のアドレスを設定します。producer.setNamesrvAddr("192.168.23.131:9876");
    	// Producer インスタンスを開始します。producer.start();
    	(int i = 0; i < 1; i++) の場合 {
    	    // メッセージを作成し、トピック、タグ、メッセージ本文を指定します Message msg = new Message("zhuzeqing-1-Topic" /* Topic */,
        	"TagA" /* タグ */,
        	("hello, rocketmq --" + i).getBytes(RemotingHelper.DEFAULT_CHARSET) /* メッセージ本文 */
        	);
        	// ブローカーにメッセージを送信する
            送信結果 sendResult = producer.send(msg);
            // sendResult を使用して、メッセージが正常に配信されたかどうかを返します。System.out.printf("%s%n", sendResult);
    	}
    	// これ以上メッセージが送信されない場合は、Producer インスタンスを閉じます。
    	プロデューサー.シャットダウン();
    }
}

消費ニュース

java.util.List をインポートします。
 
org.apache.rocketmq.client.consumer.DefaultMQPushConsumer をインポートします。
org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyContext をインポートします。
org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyStatus をインポートします。
org.apache.rocketmq.client.consumer.listener.MessageListenerConcurrently をインポートします。
org.apache.rocketmq.client.exception.MQClientException をインポートします。
org.apache.rocketmq.common.message.MessageExt をインポートします。
 
パブリッククラス Consumer {
 
	パブリック静的void main(String[] args)はInterruptedException、MQClientExceptionをスローします{
 
    	// コンシューマーをインスタンス化します DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("zhuzeqing-1");
 
    	// ネームサーバーのアドレスを設定します consumer.setNamesrvAddr("192.168.23.131:9876");
 
    	// 1 つ以上のトピックとタグをサブスクライブして、消費する必要があるメッセージをフィルター処理します。consumer.subscribe("zhuzeqing-1-Topic", "*");
    	// ブローカーから返されたメッセージを処理するためのコールバック実装クラスを登録します。consumer.registerMessageListener(new MessageListenerConcurrently() {
            パブリックConsumeConcurrentlyStatus消費メッセージ(List<MessageExt>メッセージ、ConsumeConcurrentlyContextコンテキスト) {
                System.out.printf("%s 新しいメッセージを受信: %s %n", Thread.currentThread().getName(), msgs);
                // メッセージが正常に消費されたことをマークします。 return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
            }
        });
        // コンシューマーインスタンスを開始します。consumer.start();
        System.out.printf("コンシューマーが開始しました。%n");
	}
}

VII. その他

rmqbroker IP を確認する

docker で rmqbroker を検査する

ブローカーコンテナ内のデフォルトの設定ファイルパスは

ブローカー

公式サイト: Apache RocketMQ

参照:

Docker での RocketMQ のインストールと使用_Feng Libin のブログ - CSDN ブログ_docker rocketmq

これで、docker に RocketMQ をインストールする実装手順に関するこの記事は終了です。docker に RocketMQ をインストールする方法の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Docker Desktop で rocketmq をインストールするための非常に詳細なチュートリアル
  • Docker インストール rocketMQ チュートリアル (最も詳細)
  • Docker での RocketMQ の詳細なインストールと使用
  • RocketMQ の Docker インストールとインストール中に発生した問題の解決策

<<:  モバイルウェブサイトの開発に関するいくつかの結論

>>:  ウェブページの右下隅に「いいね!」カード効果を実現するための CSS (サンプルコード)

推薦する

サーバー同時実行数の推定式と計算方法

最近、サーバーのストレステストを再度行う必要が出てきました。ここでは、最近学んだ見積もりスキームと見...

MySQL インデックス カバレッジの例の分析

この記事では、MySQL インデックス カバレッジについて例を挙げて説明します。ご参考までに、詳細は...

Ubuntu 16.04 64 ビット版の VMware Tools のインストールと構成のグラフィック チュートリアル

この記事では、VMware Toolsのインストールと構成に関するグラフィックチュートリアルを参考と...

Vueはランニングライトのシンプルな効果を実現

この記事では、マーキーのシンプルな効果を実現するためのVueの具体的なコードを参考までに共有します。...

文字列の最初の文字を取得してテキストアイコン機能を実現する純粋なCSS

CSS でテキストアイコンを実装する方法 /*アイコンスタイル*/ .nav-icon-norma...

MySQL 8.0 アップグレード体験

目次序文1. まず、既存のバージョンの MySQL を完全にアンインストールします。 2. deb ...

MySQL の union と union all の簡単な分析

データベースでは、UNION キーワードと UNION ALL キーワードの両方が 2 つの結果セッ...

MySQL 5.7.13 winx64 のインストールと設定方法のグラフィック チュートリアル (win10)

この記事では、参考までにMySQL 5.7.13 winx64のインストールと設定方法のグラフィック...

JavaScript 関数はランダムな色の検証コードをカプセル化します (完全なコード)

数字、文字、またはランダムな色の数字と文字の混合で構成される n 桁の確認コード。以下に完全なコード...

HTML における DTD の使用法の概要

DTD はマークアップの文法規則のセットです。これは XML 1.0 仕様の一部であり、HTML フ...

関数の分類の詳細な説明とJavascriptでのこのポイントの例

JS で関数を定義する 3 つの方法例を挙げて説明しましょう。 <スクリプト> //メソ...

フロントエンド Vue ユニットテストを始める

目次1. ユニットテストはなぜ必要なのでしょうか? 2. ユニットテストの書き方3. テストツール4...

自動開始および停止コマンドを適用するには、Docker サービスを再起動します (推奨)

Docker サービス アプリケーションを再起動するコマンドを見てみましょう。具体的な内容は次のと...

入力ボックスの値を取得する方法のReactの例

入力ボックスの値を取得する複数の方法最初の方法は、制御されていないコンポーネントの取得です2番目の方...

Tomcat Nginx Redis セッション共有プロセス図

1. 準備ミドルウェア: Tomcat、Redis、Nginx Jar パッケージ: commons...