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 (サンプルコード)

推薦する

MySql5.x を MySql8.x にアップグレードする方法と手順

MySQL 5.x と MySQL 8.0.X のいくつかの違いapplication.proper...

mysql-canal-rabbitmq のインストールと展開の非常に詳細なチュートリアル

目次1.1. MySQL binlog を有効にする1.2. RabbitMQ の交換とキューを構成...

MySQLでNULL値を判定する際の落とし穴事例

目次序文Mysql の case when 構文:事例実践:要約:序文今日、プログラムを開発している...

Vuexはセッションストレージデータを結合して、ページを更新するときにデータが失われる問題を解決します

目次序文1. 理由: 2. 解決策のアイデア: 1. ローカル保存方法: 2. 実装手順: 3. 最...

Mysql5.7 のルートパスワードを忘れた場合の対処法 (シンプルで効果的な方法)

前回の記事では、MySQL 5.7でルートパスワードを忘れた場合と、MySQL 5.7でルートパスワ...

CSSはカラフルでスマートな影の効果を実現します

背景前景要素から特定の色を継承する影の効果を作成する方法を知りたいと思ったことはありませんか?方法に...

docker に nacos をインストールしてデータベースを構成する詳細なチュートリアル

環境の準備 Docker環境 MySQL 5.7 (公式イメージはmysql8をサポートしていません...

Vue.js フロントエンド Web ページ ポップアップ非同期動作例の分析

目次1. 序文2. ポップアップコンポーネントを2つ見つける3. 自分で作る3.1. Promise...

js 加算、減算、乗算、除算の正確な計算方法のサンプルコード

序文コンピュータの数値は浮動小数点であるため、計算プロセス中に取得されるデータは通常正確ではなく、そ...

CentOS 7 でソースコードから Openssh をインストールする方法

環境: CentOS 7.1.1503 最小インストール依存パッケージをダウンロードします: yum...

Linux で複数のファイルの名前を一度に変更する方法

序文日常業務では、すべての jpg ファイルを bnp に変更したり、名前の 1 を one に変更...

MySQL分離の使用手順を読む

現在のトランザクションはどの履歴バージョンを読み取ることができますか?読み取りビューは、トランザクシ...

MySQL 5.7 の /etc/my.cnf パラメータの紹介

以下は、mysql 5.7 の /etc/my.cnf の一般的なパラメータの一部です。これらを自分...

Nginxを再コンパイルしてモジュールを追加する方法

Nginx をコンパイルしてインストールするときに、http_ssl_module などの一部のモジ...

JavaScript ベースのランダム点呼システムの実装

この記事では、ランダムロールコーラーを実装するためのJavaScriptの具体的なコードを参考までに...