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

推薦する

Vue 初心者ガイド: 最初の Vue-cli スキャフォールディング プログラムの作成

1. Vue - 最初の vue-cli プログラムVueの開発はNodeJSに基づいています。実際...

CSS3は、Transformを使用して動く2D時計を作成します。

これでtransformコースは終了です。例を見てみましょう。transform transform...

2列のデータをSQLの新しい列として操作する

以下のように表示されます。 bb_sbからa1、a2、a1+a2 a、a1*a2 b、a1*1.0/...

MySQLインジェクションバイパスフィルタリング技術の概要

まず、GIF 操作を見てみましょう。ケース1: スペースがフィルタリングされるスペースの代わりに角括...

ユーザーがフォームを繰り返し送信するのを防ぐ方法の概要

重複したフォーム送信は、マルチユーザー Web アプリケーションで最も一般的で厄介な問題です。重複送...

CSS のインライン スタイルに変換するソリューション (css-inline)

シーンについて話すメールを送信サードパーティのウェブサイトにHTMLを埋め込む他の編集者の記事をコピ...

ウェブサイトのBGM実装方法

個々のウェブマスターにとって、自分のウェブサイトをいかにユニークで個性あふれるものにするかは、常に絶...

MySQL分離の使用手順を読む

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

タブ効果を実現する js 開発プラグイン

この記事の例では、タブ効果を実現するためのjsプラグインの具体的なコードを参考までに共有しています。...

MySQL の int(n) の後の n はどういう意味ですか?

int(1) の長さ 1 は、許可されたストレージ幅を表していないことはすでにご存知かもしれません...

nginxフロー制御とアクセス制御の実装

nginx トラフィック制御レート制限は非常に便利ですが、Nginx では誤解され、誤って設定される...

Nginx 構成 80 ポート アクセス 8080 とプロジェクト名アドレス メソッド分析

Tomcatはプロジェクトにアクセスします。通常はIP + ポート + プロジェクト名です。 Ngi...

ウェブフロントエンド開発者が知っておくべき 9 つの実用的な CSS プロパティ

1. 角を丸くする今日の Web デザインは、常に最新の開発テクノロジーに追随しており、HTML5 ...

MySQLクエリステートメント内のユーザー変数のコード分析

前回の記事では、MySQL 最適化の概要 - クエリの合計数を紹介しました。この記事では、クエリ ス...

MySQLのバッファプールの詳細な説明

MySQL のデータはディスクに書き込む必要があることは誰もが知っています。ディスクの読み取りと書き...