I.はじめに
RocketMQがMetaqカーネルに基づいて、アリババ独立した研究開発により、ミドルウェアモデルメッセージング分散キューで、JMS仕様への参照のみを描き、Metaq3.X後RocketMq改名されましたが、JMS仕様に従っていません。サービスのパフォーマンスを向上させ、ネットワークのためのより軽量なネームサーバの使用は、ルーティング、飼育係によって見捨てられた、とのメッセージ失敗した再試行メカニズムをサポートしています。
通常のJMSの概念に加えて:
ネームサーバ:店舗、現在のすべてのクラスタ情報ブローカー、ブローカーとのトピックの対応関係。
ブローカ:クラスタ・コアモジュール、責任トピックメッセージ保管、消費者サイト管理(消費予定)です。
展開構造をクラスタ化します。
同時要求の少ない、デュアルマスターモードのシステムに十分な、他のクラスタモデル独自のBaiduはあるので、この記事では、デュアル・マスタ・モードを構築する方法について説明します。
第二に、ワークフロー
1.ネームサーバ、ネームサーバの後(ZKよりも、飼育係の役割が、より軽量)ブローカー、Produer、消費者を待っているとさえルーティング制御センターの同等まで、ポートをリスニングアップ。
2、Brokerは、すべてのネームサーバは、ハートビートパケットを送信するために長い接続時間を保持して、開始します。ブローカーのハートビートパケットは、現在の(IP +ポート、など)に関する情報が含まれ、すべてのトピックの情報を格納します。登録が成功した後、ブローカーネームサーバのクラスタであっトピックのマッピング関係。
3、メッセージの送受信の前に、最初のトピックを作成して、あなたはときトピックブローカーを保存したいトピックを指定する必要が作成されます。メッセージを送信するときにトピックにも自動的に作成することができます。
4、プロデューサー長い接続Namesrvクラスタの起動を確立するために開始する、請求ステーションメッセージを送信し、現在の送信はネームサーバがブローカに直接対応した長さブローカ、メッセージとの接続を確立し、そこからトピックブローカ上に存在している取得します。
5、プロデューサーと同様の消費者。そのうちの一つは、長い接続を確立するネームサーバを使用すると、現在のサブスクリプションのトピックの存在を得るブローカーは、その後、チャネルブローカーとの直接接続を確立した上で、ニュースを消費し始めました。
第三に、配備構成
rocketmqバージョンは4.5.2、Linuxサーバの解凍にダウンロードされたファイルです。
新店舗のフォルダ下に抽出パスでは(以前に新しいオンラインの参照フォルダの一部が、起動に失敗した鉛ブローカー、原因はまだ調査中です)
場合に応じて変更ビン/ JVM構成をrunbroker.shは、好ましくは1グラム未満、製造することができます
JAVA_OPT = "$ {JAVA_OPT} -server -Xms1g -Xmx1G -Xmn512m"
修飾されたビン/好ましくは1グラム未満、製造することができる場合に応じて、JVM構成をserver.sh
JAVA_OPT = "$ {JAVA_OPT} -server -Xms1g -Xmx1G -Xmn512m -XX:MetaspaceSize = 128メートル-XX:MaxMetaspaceSize = 320メートル"
変更のconf / 2M-noslave次ブローカ構成
broker-a.properties
#はクラスタ名に属し brokerClusterName = rocketmq- クラスタ #broker名、異なるコンフィギュレーション・ファイルを埋めるために、ここで注意を払うが同じではありません brokerNameに =ブローカー・2#間のA文書の唯一の違い #マスターのための0、> = 0 0はbrokerIdスレーブ表し、#nameServerアドレスをセミコロンで区切られ brokerId = 0 、#nameServerアドレスセミコロンで区切っ namesrvAddr = 10.32.16.195:9876; 10.32.16.196:9876 メッセージを送ること#は、サーバが自動的にトピックが存在しません作成し、キューのデフォルト数は、作成 defaultTopicQueueNumsを = 4。 #かブローカーは、ラインのアドバイスターンオン、自動的にトピックを作成することができ、ラインが閉じられている autoCreateTopicEnable = trueに #、アドバイスラインが開いて、Brokerが自動的にサブスクリプション・グループを作成することができ、オンライン近く autoCreateSubscriptionGroup = trueに #Broker外国サービスリスニングポート listenPortの = 10911 #、ファイル時刻を削除デフォルト午前4時 deleteWhen = 04 #保持時間ファイル、既定 48 時間 fileReservedTime = 120 各ファイルの#commitLogデフォルトサイズ1G mapedFileSizeCommitLog = 1073741824 #ConsumeQueue 30Wサービス状況に応じて調整デフォルトの記憶部と、の各ファイル mapedFileSizeConsumeQueue = 300000 #destroyMapedFileIntervalForcibly = 120000 #redeleteHangedFileInterval = 120000の #は、物理ディスク・ファイル・スペースを検出 diskMaxUsedSpaceRatio = 88 #・ストレージ・パス storePathRootDir =は/ usr / local /のrocketmq-4.5.2 / 店舗 #commitLogストレージ・パス storePathCommitLog =は/ usr / local / rocketmq- 4.5.2 /店舗/ commitlog #消費キュー・ストレージ・パスストレージ・パス storePathConsumeQueue =は/ usr / local /のrocketmq-4.5.2 /ショップ/ consumequeue #メッセージインデックスの格納パス storePathIndex =は/ usr / local /のrocketmq-4.5.2 /店舗/ インデックス #checkpointファイルストレージパス storeCheckpoint =は/ usr / local /のrocketmq -4.5.2 /ストア/ チェックポイント #abortファイルストレージパス abortFile =は/ usr / local / rocketmq-4.5.2 /ストア/ ABORTの #メッセージサイズの制限 MaxMessageSize = 65536 #flushCommitLogLeastPages = 4 #flushConsumeQueueLeastPages = 2 #flushCommitLogThoroughInterval = 10000 # flushConsumeQueueThoroughInterval = 60000 #Broker役割 # - ASYNC_MASTER非同期レプリケーションマスター # - SYNC_MASTER同期デュアル書き込みマスター # - SLAVE brokerRole = ASYNC_MASTERの #ブラシディスクモード # - ASYNC_FLUSH非同期ブラシディスク # - SYNC_FLUSH同期ブラシディスク flushDiskType = ASYNC_FLUSH #checkTransactionMessageEnable = falseに スレッドプール#メッセージの数 #sendMessageThreadPoolNums = 128 #プルメッセージスレッド数プール #pullMessageThreadPoolNums = 128
broker-b.properties
#クラスタ名に属し brokerClusterName = rocketmq- クラスタ #broker異なるコンフィギュレーションファイルに記入する名前、ここで注意を払うが同じではありません brokerNameに =ブローカー・間#2の文書Bの唯一の違い #マスターのための0、> = 0 0はbrokerIdスレーブ表し、#nameServerアドレスをセミコロンで区切られ brokerId = 0 、#nameServerアドレスセミコロンで区切っ namesrvAddr = 10.32.16.195:9876; 10.32.16.196:9876 メッセージを送ること#は、サーバが自動的にトピックが存在しません作成し、キューのデフォルト数は、作成 defaultTopicQueueNumsを = 4。 #かブローカーは、ラインのアドバイスターンオン、自動的にトピックを作成することができ、ラインが閉じられている autoCreateTopicEnable = trueに #、アドバイスラインが開いて、Brokerが自動的にサブスクリプション・グループを作成することができ、オンライン近く autoCreateSubscriptionGroup = trueに #Broker外国サービスリスニングポート listenPortの = 10911 #、ファイル時刻を削除デフォルト午前4時 deleteWhen = 04 #保持時間ファイル、既定 48 時間 fileReservedTime = 120 各ファイルの#commitLogデフォルトサイズ1G mapedFileSizeCommitLog = 1073741824 #ConsumeQueue 30Wサービス状況に応じて調整デフォルトの記憶部と、の各ファイル mapedFileSizeConsumeQueue = 300000 #destroyMapedFileIntervalForcibly = 120000 #redeleteHangedFileInterval = 120000の #は、物理ディスク・ファイル・スペースを検出 diskMaxUsedSpaceRatio = 88 #・ストレージ・パス storePathRootDir =は/ usr / local /のrocketmq-4.5.2 / 店舗 #commitLogストレージ・パス storePathCommitLog =は/ usr / local / rocketmq- 4.5.2 /店舗/ commitlog #消費キュー・ストレージ・パスストレージ・パス storePathConsumeQueue =は/ usr / local /のrocketmq-4.5.2 /ショップ/ consumequeue #メッセージインデックスの格納パス storePathIndex =は/ usr / local /のrocketmq-4.5.2 /店舗/ インデックス #checkpointファイルストレージパス storeCheckpoint =は/ usr / local /のrocketmq -4.5.2 /ストア/ チェックポイント #abortファイルストレージパス abortFile =は/ usr / local / rocketmq-4.5.2 /ストア/ ABORTの #メッセージサイズの制限 MaxMessageSize = 65536 #flushCommitLogLeastPages = 4 #flushConsumeQueueLeastPages = 2 #flushCommitLogThoroughInterval = 10000 # flushConsumeQueueThoroughInterval = 60000 #Broker役割 # - ASYNC_MASTER非同期レプリケーションマスター # - SYNC_MASTER同期デュアルライトマスター # - SLAVE brokerRole = ASYNC_MASTER #ブラシ・ディスク・モード # - ASYNC_FLUSH非同期ディスクブラシ # - SYNC_FLUSH同期ブラシ板 flushDiskType = ASYNC_FLUSH #checkTransactionMessageEnable = 偽 プール#メッセージ内のスレッドの数 #sendMessageThreadPoolNums = 128 スレッドプール#プルメッセージの数 #pullMessageThreadPoolNums = 128
まず、スタートnamesrv二つのサーバ
nohupをSH mqnamesrv> /usr/local/rocketmq-4.5.2/logs/namesrv.log 2>&1&
Brokerは、二つのサーバを再起動します
nohupをSH mqbroker -c /usr/local/rocketmq-4.5.2/conf/2m-noslave/broker-a.properties>は/ dev / nullに 2>&1&
ビューMQ開始状況:JPS
デュアルマスターモードが正常に起動しました。
四、rocketmqコンソール
ダウンロードオープンソースプロジェクトます。https://github.com/apache/rocketmq-externals
、プロジェクトはrocketmq.config.namesrvAddrを設定するには、application.propertiesファイルを使用します
打包:MVNきれいなパッケージ-Dmaven.test.skip =真
ファイル名を指定して実行springbootプロジェクト:javaの-jar xx.jar
サービス中に起動に失敗しました:
ファイアウォールサービスが原因rocketmqを閉じていません
systemctlストップfirewalld.service