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の起動失敗の解決策

MySQLの起動失敗の解決策MySQLを起動できませんmysqlを停止した後、いくつかの操作(ホスト...

Dockerのネットワークモードと設定方法

1. Dockerネットワークモードdocker run が Docker コンテナを作成するときに...

CSSは高さを設定せずにdivを完全に中央に配置することを実現します

必要とする本文の下のdivは垂直方向に中央揃えになっていますdiv 内のテキストを垂直中央に配置する...

Vueはダイアログのカプセル化を実装します

目次Vue2 ライティングVue3プラグインのバージョンの記述Vue3 動的コンポーネントの記述書き...

Vue バックエンド管理システムのページング機能の実装例

この記事では、主に Vue バックグラウンド管理システムのページング機能の実装を紹介し、次のように共...

Flinkのフォールトトレラントメカニズムに関する簡単な説明:ジョブ実行とデーモン

目次1. ジョブ実行のフォールトトレランス1.1 タスクフェイルオーバー戦略1.2 ジョブ再開戦略2...

Nginx 環境での WordPress マルチサイト構成の詳細な説明

WordPress のマルチサイト機能を使用すると、1 つの WordPress プログラムをインス...

MySQL PHP 構文の簡単な分析

まずcharAt関数の基本的な構文を見てみましょう文字 = str.charAt(インデックス) c...

Javascript を使用して、スライドバー効果のあるスライドナビゲーション プラグインを開発します。

目次1. はじめに2. 使用方法3. 開発プロセス1. モデル例2. イベントとアニメーション4. ...

H5でクリックされたときにaタグの背景色をキャンセルする方法

1. モバイル端末でクリックされたときにタグの青色を解除する { -webkit-tap-highl...

Reactプロジェクトで要素を使用する方法

React プロジェクトで要素フレームワークを使用するのは今回が初めてです。非常に単純な問題に遭遇し...

DockerHubを自分で構築する方法

先ほど使用したDocker HubはDockerによって提供されています。独自のDockerを構築す...

Mysql関数呼び出しの最適化の詳細な説明

目次関数呼び出しの最適化関数呼び出しの最適化MySQL 関数は、内部的に決定論的または非決定論的とし...

CSS を使用してテクスチャ付きグラデーション背景画像を記述するためのサンプル コード

プロジェクト内のページの長さはおよそ2000px以上あり、背景画像にはテクスチャやグラデーションがあ...