私は最近 RocketMQ の使い方を学び、RocketMQ サーバーを構築する必要がありました。この記事では主に RocketMQ の構築プロセスと、このプロセスで遭遇したいくつかの落とし穴を記録します。 準備ビルドする前に、いくつか準備が必要です。ここでは、docker を使用してサービスをビルドする必要があるため、事前に docker をインストールする必要があります。なお、rocketmq ではブローカーとネームサーバーの導入が必要であり、別途導入するのは面倒であることを考慮して、ここでは docker-compose を使用します。 rocketmq のアーキテクチャ図は次のとおりです。 さらに、MQ サービスのステータスとメッセージの消費を監視するための Web 視覚化コンソールを構築する必要もあります。ここでは Rocketmq-console が使用され、プログラムも docker を使用してインストールされます。 展開プロセスまず、rocketmq docker イメージが必要です。ここでは、自分で作成することを選択できます。[email protected]:apache/rocketmq-docker.git を直接プルして、イメージを作成します。 Docker Hub の公式イメージを直接使用することもできます。イメージ名は 次に、MQ 構成ファイル ブローカークラスタ名 = デフォルトクラスタ ブローカー名 = ブローカー-a ブローカーID = 0 削除時 = 04 ファイル予約時間 = 48 ブローカーロール = ASYNC_MASTER フラッシュディスクタイプ = ASYNC_FLUSH # ローカルプログラムがクラウドホストのMQを呼び出す場合は、これをクラウドホストのIPに設定する必要があります ブローカーIP1=10.10.101.80 次のフォルダーを作成します: バージョン: '2' サービス: 名前rv: 画像: rocketmqinc/rocketmq コンテナ名: rmqnamesrv ポート: -9876:9876 ボリューム: - /opt/rocketmq/logs:/home/rocketmq/logs - /opt/rocketmq/store:/home/rocketmq/store コマンド: sh mqnamesrv ブローカ: 画像: rocketmqinc/rocketmq コンテナ名: rmqbroker ポート: - 10909:10909 - 10911:10911 - 10912:10912 ボリューム: - /opt/rocketmq/logs:/home/rocketmq/logs - /opt/rocketmq/store:/home/rocketmq/store - /opt/rocketmq/conf/broker.conf:/opt/rocketmq-4.4.0/conf/broker.conf #コマンド: sh mqbroker -n namesrv:9876 コマンド: sh mqbroker -n namesrv:9876 -c ../conf/broker.conf 依存: -名前 環境: JAVA_HOME = /usr/lib/jvm/jre コンソール: 画像: styletang/rocketmq-console-ng コンテナ名: rocketmq-console-ng ポート: -8087:8080 依存: -名前 環境: -JAVA_OPTS= -Dlogging.level.root=info -Drocketmq.namesrv.addr=rmqnamesrv:9876 - Dcom.rocketmq.sendMessageWithVIPChannel=false 注記 ここで注意すべき点は、rocketmq ブローカーと rokcetmq-console の両方が rokcetmq ネームサーバーに接続する必要があり、ネームサーバーの IP を知っておく必要があることです。 docker-compose を使用すると、上記 3 つの Docker コンテナが一緒にオーケストレーションされます。ネーム サーバ コンテナ名 rmqnamesrv など、コンテナ IP の代わりにコンテナ名を直接使用できます。 設定が完了したら、docker-compose up を実行して 3 つのコンテナを起動します。起動に成功したら、ip:8087 にアクセスして、mq 外部コンソールを確認します。次の情報が表示されれば、rocketmq サービスが正常に起動しています。 RocketMQ の初体験ここでは、Springboot を使用して MQ をすぐに使い始めるため、 <!--pom.xml に依存関係を追加する--> <依存関係> <グループ ID>org.apache.rocketmq</グループ ID> <artifactId>rocketmq-spring-boot-starter</artifactId> <バージョン>2.0.3</バージョン> </依存関係> コンシューマー サービス センダーは次のように構成されます。 ## アプリケーション.プロパティ rocketmq.name-server=ip:9876 rocketmq.producer.group=私のグループ 消費者サービス送信者の手順は次のとおりです。 @SpringBootアプリケーション パブリッククラス ProducerApplication は CommandLineRunner を実装します { @リソース プライベート RocketMQTemplate rocketMQTemplate; パブリック静的void main(String[] args){ SpringApplication.run(ProducerApplication.class、引数); } パブリック void run(String...args) 例外をスローします { rocketMQTemplate.convertAndSend("test-topic-1", "Hello, World!"); rocketMQTemplate.send("test-topic-1", MessageBuilder.withPayload("Hello, World! 私は Spring のメッセージから来ました").build()); } } メッセージ コンシューマーの構成は次のとおりです。 ## アプリケーション.プロパティ rocketmq.name-server=ip:9876 メッセージ コンシューマーは次のプログラムを実行します。 @SpringBootアプリケーション パブリッククラス ConsumerApplication{ パブリック静的void main(String[] args){ SpringApplication.run(ConsumerApplication.class、引数); } 翻訳者 @サービス @RocketMQMessageListener(トピック = "test-topic-1", コンシューマーグループ = "my-consumer_test-topic-1") パブリック静的クラス MyConsumer1 は RocketMQListener<String> を実装します { パブリックvoid onMessage(文字列メッセージ) { log.info("受信したメッセージ: {}", message); } } } 関連する質問メッセージ送信者は この例外は、brokerip が正しく設定されていないために発生します。ブローカー構成情報を表示するには、mq サービス コンソールにログインしてください。 上記の MQ コンソールでは MQ サービス情報を正常に表示できません。 この問題は主に、ネームサーバーの IP 設定が正しくないことが原因で発生します。現時点で接続されているネームサーバーのアドレス情報を確認するには、MQ コンソールの操作とメンテナンス ページを確認してください。 ここで設定されているアドレスは ここでは、Docker で環境変数を設定する必要があります。設定は次のとおりです。 -JAVA_OPTS= -Dlogging.level.root=info -Drocketmq.namesrv.addr=rmqnamesrv:9876 ヘルプドキュメントロケットMQドッカー 著者:Leo_wl 出典: http://www.cnblogs.com/Leo_wl/ Docker rocketmq デプロイメントの実装例に関するこの記事はこれで終わりです。より関連性の高い Docker rocketmq デプロイメントのコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: モバイル Web WAP には Bootstrap と jQuery Mobile のどちらを使用すべきか
>>: mysql-connector-java8.0.27 へのアップグレードに関する注意事項
目次2. 目的2.1 オブジェクトにプロパティを追加する2.3 オブジェクトの複製2.4 複数のオブ...
1. 何ですか視差スクロールとは、複数の背景レイヤーを異なる速度で動かすことで、3次元のモーション...
静的と動的の分離動的リクエストと静的リクエストはミドルウェアを通じて分離され、不要なリクエストの消費...
雇用主から MySQL クエリ条件でインデックスが使用されるかどうかを尋ねられた場合、どのように答え...
では、早速スクリーンショットを実行してみましょう。黒い駒はプレイヤーの位置、赤い駒はコンピュータの位...
問題の説明: phpstorm の SFTP ホストを 192.168.122.1 に設定すると、接...
この例の Web カラー ピッカー機能は、ページ効果を実現するために CSS3 を使用します。つまり...
1. インデックスの重要性インデックスは、列に特定の値を持つ行をすばやく見つけるために使用されます。...
目次問題の説明原理分析問題分析拡大する総括する問題の説明ユーザーはプライマリ データベースに対して変...
目次1 設定ディレクトリとデータディレクトリを作成する3 イメージからホストに構成ファイルをコピーす...
この記事では、パーセンテージスコアリングプログレスバーを実現するためのjQueryの具体的なコードを...
最新の HTML 標準には、レイアウトを計算するために使用できる calc CSS 式があります。し...
1. フロート: 主な目的は、テキストを画像の周囲に折り返す効果を実現することです。また、複数列レイ...
CAST関数前回の記事では、型変換を表示するために使用する CAST 関数について説明しました。暗黙...
<br />ナビゲーションとは、ウェブサイトの上部にあることが多いナビゲーション バーの...