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

推薦する

IE6/7 で絶対配置された要素が不可解に消えたりブロックされたりする問題を解決する方法

1. 絶対配置レイヤーの隣接フローティング レイヤーの幅が親レイヤーの幅と等しくなく、フロートがクリ...

nginx高可用性クラスタの実装プロセス

この記事は主に、nginx 高可用性クラスタの実装プロセスを紹介します。この記事のサンプルコードは非...

UA による Web サイトのクロールを防ぐ Nginx のクローラー対策戦略

クローラー対策ポリシー ファイルを追加しました: vim /usr/www/server/nginx...

JS配列メソッドsome、every、findの使用に関する詳細

目次1. いくつか2. すべての3. 見つける1. いくつかsome()メソッドは、指定された関数の...

CSS マスクを使用して PNG 画像のサイズを大幅に最適化します (推奨)

この記事は共有および集約することを歓迎します。全文を転載する必要はありません。著作権を尊重してくださ...

要素テーブルテーブルコンポーネントの複数フィールド(複数列)ソート方法

目次必要:発生した問題:解決する:必要:要素テーブル内の複数の列を並べ替えるには、日付の並べ替えをク...

MySQLストアドプロシージャにおけるカーソル(DECLARE)の原理と使い方の詳細な説明

この記事では、例を使用して、MySQL ストアド プロシージャにおけるカーソル (DECLARE) ...

CSS でベジェ曲線の実装を反転する方法

まずは、以前書いた CSS カルーセルアニメーション効果を見てみましょう。アニメーションの遷移をスム...

レアタグフィールドセットと凡例の使用方法の詳細な説明

<fieldset>と<legend>については、ほとんどの人はおそらく馴染...

Reactはルーティングを使用してログインインターフェースにリダイレクトします

前回の記事では、webpack と react 環境を設定した後、ログイン インターフェースとその後...

MySQL コマンドラインモードアクセス操作 MySQL データベース操作

使用環境cmd モードで、mysql --version と入力します (インストールされている M...

HTML ul 順序なしテーブルのアプリケーションネスト

順序なしリストのアプリケーションネストコードをコピーコードは次のとおりです。 <!DOCTYP...

Ajax jQueryはページ上のdivの更新効果を実現します

元のコードは次のとおりです。 <div class='コントロールグループ'&...

Reactはダブルスライダークロススライドを実装します

この記事では、Reactでダブルスライダークロススライドを実装するための具体的なコードを参考までに共...

dockerでデプロイされたjenkinsでgitプログラムを実行する際の問題について

1. まず、gitを関連付けるときにエラーメッセージが報告されます: エラー: ビルドするリビジョン...