rocketmq展開スタートガイド-Dockerバージョン
最近rocketmqを使用することを学んで、rocketmqサーバーを構築する必要があり、我々は大手レコードrocketmqピットプロセスの数を設定し、このプロセスが踏まれています。
準備の#
建設前に、我々はサービスを構築ドッキングウィンドウを使用する必要があるいくつかの準備作業を、行う必要があり、事前にドッキングウィンドウをインストールする必要があります。また、アカウントに多くのトラブルの別の展開を取って、ブローカーrocketmqとネームサーバを配備する必要性のために、ここでドッカ - コンを使用します。
次のようにrocketmqアーキテクチャは次のとおりです。
さらに、本明細書中で使用されるように、サービスMQの状態、およびメッセージの消費量を監視することができ、ウェブ視覚化コンソールを構築する必要性は、rocketmq・コンソールは、プログラムが同じマウントドッキングウィンドウを使用します。
展開プロセスの#
まず、我々は自分自身、直接引っ張って生産するために選択することができますドッキングウィンドウミラー、rocketmqする必要が [email protected]を:Apacheの/ rocketmq-docker.gitを した後、ミラー。また、公式のドッキングウィンドウハブミラーの生産名前で直接使用することができます rocketmqinc/rocketmq
。
そして、MQの構成ファイルを作成し broker.conf
、ファイルが配置され /opt/rocketmq/conf
、以下のように、構成されました:
brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
deleteWhen = 04 fileReservedTime = 48 brokerRole = ASYNC_MASTER flushDiskType = ASYNC_FLUSH # 如果是本地程序调用云主机 mq,这个需要设置成 云主机 IP brokerIP1=10.10.101.80
以下のフォルダを作成します/opt/rocketmq/logs
、/opt/rocketmq/store
そして最終的には
version: '2'
services:
namesrv:
image: rocketmqinc/rocketmq container_name: rmqnamesrv ports: - 9876:9876 volumes: - /opt/rocketmq/logs:/home/rocketmq/logs - /opt/rocketmq/store:/home/rocketmq/store command: sh mqnamesrv broker: image: rocketmqinc/rocketmq container_name: rmqbroker ports: - 10909:10909 - 10911:10911 - 10912:10912 volumes: - /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 #command: sh mqbroker -n namesrv:9876 command: sh mqbroker -n namesrv:9876 -c ../conf/broker.conf depends_on: - namesrv environment: - JAVA_HOME=/usr/lib/jvm/jre console: image: styletang/rocketmq-console-ng container_name: rocketmq-console-ng ports: - 8087:8080 depends_on: - namesrv environment: - JAVA_OPTS= -Dlogging.level.root=info -Drocketmq.namesrv.addr=rmqnamesrv:9876 - Dcom.rocketmq.sendMessageWithVIPChannel=false
注意点
rocketmqブローカーとrokcetmq-コンソールを使用すると、ネームサーバのIPアドレスを知っている必要があり、rokcetmqネームサーバに接続する必要が注目されるべきです。ドッカー-COMPOSEを使用した後、3つのドッカー容器と上記配置は、コンテナの名前が、本明細書ネームサーバrmqnamesrv、コンテナ船IP名の代わりに直接使用されます。
設定が完了したら、実行して、3個のコンテナを起動するようにドッキングウィンドウ-構成打ち上げ成功後、IPを訪問:8087、外部MQコンソールビューを、あなたは、以下の情報を見ることができれば、rocketmqサービスが正常に開始されました。
rocketmq初めての経験#
すぐにここspringboot使用されますMQを使い始める、使用する rocketmq-spring-boot-starter
次のように構成されたモジュール、ポンポンを:
<!--在pom.xml中添加依赖-->
<dependency>
<groupId>org.apache.rocketmq</groupId> <artifactId>rocketmq-spring-boot-starter</artifactId> <version>2.0.3</version> </dependency>
次のように構成された消費者向けサービスの送信者:
## application.properties
rocketmq.name-server=ip:9876
rocketmq.producer.group=my-group
次のように消費者サービスの送信者プログラムは次のとおりです。
@SpringBootApplication
public class ProducerApplication implements CommandLineRunner { @Resource private RocketMQTemplate rocketMQTemplate; public static void main(String[] args){ SpringApplication.run(ProducerApplication.class, args); } public void run(String... args) throws Exception { rocketMQTemplate.convertAndSend("test-topic-1", "Hello, World!"); rocketMQTemplate.send("test-topic-1", MessageBuilder.withPayload("Hello, World! I'm from spring message").build()); } }
メッセージコンシューマの設定は次のとおりです。
## application.properties
rocketmq.name-server=ip:9876
次のようにプログラムを実行するためのニュース消費者:
@SpringBootApplication
public class ConsumerApplication{ public static void main(String[] args){ SpringApplication.run(ConsumerApplication.class, args); } @Slf4j @Service @RocketMQMessageListener(topic = "test-topic-1", consumerGroup = "my-consumer_test-topic-1") public static class MyConsumer1 implements RocketMQListener<String> { public void onMessage(String message) { log.info("received message: {}", message); } } }
関連質問#
- 図例外に示すように、メッセージ送信者は、例外メッセージを送信します
Caused by: org.apache.rocketmq.remoting.exception.RemotingTooMuchRequestException: sendDefaultImpl call timeout
。
この異常はなく、鉛正しく設定brokerip MQサービスコンソールのログを記録する予定です、あなたはブローカーの設定情報を表示することができます。
上記は、 192.168.128.3:10911
容器ドッカー内部ホストIPであるIP、です。必要である、IPクラウドホストIPに設定する必要があり broker.conf
、変更する brokerIP1
パラメータを。
- MQのMQコンソールが正しくサービス情報を表示することはできません。
主な問題は、エラーを設定するネームサーバのIPです。ビューMQコンソール操作およびメンテナンスページ、あなたが接続し、この時点でのネームサーバのアドレス情報を見ることができます。
ここでは、のために設定されたアドレスを確認することができます127.0.0.1:9876
。ドッキングウィンドウコンテナを使用して、ここで、MQコンソールので、コンテナの直接のアクセスは 127.0.0.1:9876
、むしろ適切な手順内のホストよりも、独自の内部にアクセスします。
ここでは、環境変数のドッキングウィンドウを設定する必要があり、次のように、構成は次のとおりです。
- JAVA_OPTS= -Dlogging.level.root=info -Drocketmq.namesrv.addr=rmqnamesrv:9876
ヘルプドキュメントの#
最近rocketmqを使用することを学んで、rocketmqサーバーを構築する必要があり、我々は大手レコードrocketmqピットプロセスの数を設定し、このプロセスが踏まれています。
準備の#
建設前に、我々はサービスを構築ドッキングウィンドウを使用する必要があるいくつかの準備作業を、行う必要があり、事前にドッキングウィンドウをインストールする必要があります。また、アカウントに多くのトラブルの別の展開を取って、ブローカーrocketmqとネームサーバを配備する必要性のために、ここでドッカ - コンを使用します。
次のようにrocketmqアーキテクチャは次のとおりです。
さらに、本明細書中で使用されるように、サービスMQの状態、およびメッセージの消費量を監視することができ、ウェブ視覚化コンソールを構築する必要性は、rocketmq・コンソールは、プログラムが同じマウントドッキングウィンドウを使用します。
展開プロセスの#
まず、我々は自分自身、直接引っ張って生産するために選択することができますドッキングウィンドウミラー、rocketmqする必要が [email protected]を:Apacheの/ rocketmq-docker.gitを した後、ミラー。また、公式のドッキングウィンドウハブミラーの生産名前で直接使用することができます rocketmqinc/rocketmq
。
そして、MQの構成ファイルを作成し broker.conf
、ファイルが配置され /opt/rocketmq/conf
、以下のように、構成されました:
brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
deleteWhen = 04 fileReservedTime = 48 brokerRole = ASYNC_MASTER flushDiskType = ASYNC_FLUSH # 如果是本地程序调用云主机 mq,这个需要设置成 云主机 IP brokerIP1=10.10.101.80
以下のフォルダを作成します/opt/rocketmq/logs
、/opt/rocketmq/store
そして最終的には
version: '2'
services:
namesrv:
image: rocketmqinc/rocketmq container_name: rmqnamesrv ports: - 9876:9876 volumes: - /opt/rocketmq/logs:/home/rocketmq/logs - /opt/rocketmq/store:/home/rocketmq/store command: sh mqnamesrv broker: image: rocketmqinc/rocketmq container_name: rmqbroker ports: - 10909:10909 - 10911:10911 - 10912:10912 volumes: - /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 #command: sh mqbroker -n namesrv:9876 command: sh mqbroker -n namesrv:9876 -c ../conf/broker.conf depends_on: - namesrv environment: - JAVA_HOME=/usr/lib/jvm/jre console: image: styletang/rocketmq-console-ng container_name: rocketmq-console-ng ports: - 8087:8080 depends_on: - namesrv environment: - JAVA_OPTS= -Dlogging.level.root=info -Drocketmq.namesrv.addr=rmqnamesrv:9876 - Dcom.rocketmq.sendMessageWithVIPChannel=false
注意点
rocketmqブローカーとrokcetmq-コンソールを使用すると、ネームサーバのIPアドレスを知っている必要があり、rokcetmqネームサーバに接続する必要が注目されるべきです。ドッカー-COMPOSEを使用した後、3つのドッカー容器と上記配置は、コンテナの名前が、本明細書ネームサーバrmqnamesrv、コンテナ船IP名の代わりに直接使用されます。
設定が完了したら、実行して、3個のコンテナを起動するようにドッキングウィンドウ-構成打ち上げ成功後、IPを訪問:8087、外部MQコンソールビューを、あなたは、以下の情報を見ることができれば、rocketmqサービスが正常に開始されました。
rocketmq初めての経験#
すぐにここspringboot使用されますMQを使い始める、使用する rocketmq-spring-boot-starter
次のように構成されたモジュール、ポンポンを:
<!--在pom.xml中添加依赖-->
<dependency>
<groupId>org.apache.rocketmq</groupId> <artifactId>rocketmq-spring-boot-starter</artifactId> <version>2.0.3</version> </dependency>
次のように構成された消費者向けサービスの送信者:
## application.properties
rocketmq.name-server=ip:9876
rocketmq.producer.group=my-group
次のように消費者サービスの送信者プログラムは次のとおりです。
@SpringBootApplication
public class ProducerApplication implements CommandLineRunner { @Resource private RocketMQTemplate rocketMQTemplate; public static void main(String[] args){ SpringApplication.run(ProducerApplication.class, args); } public void run(String... args) throws Exception { rocketMQTemplate.convertAndSend("test-topic-1", "Hello, World!"); rocketMQTemplate.send("test-topic-1", MessageBuilder.withPayload("Hello, World! I'm from spring message").build()); } }
メッセージコンシューマの設定は次のとおりです。
## application.properties
rocketmq.name-server=ip:9876
次のようにプログラムを実行するためのニュース消費者:
@SpringBootApplication
public class ConsumerApplication{ public static void main(String[] args){ SpringApplication.run(ConsumerApplication.class, args); } @Slf4j @Service @RocketMQMessageListener(topic = "test-topic-1", consumerGroup = "my-consumer_test-topic-1") public static class MyConsumer1 implements RocketMQListener<String> { public void onMessage(String message) { log.info("received message: {}", message); } } }
関連質問#
- 図例外に示すように、メッセージ送信者は、例外メッセージを送信します
Caused by: org.apache.rocketmq.remoting.exception.RemotingTooMuchRequestException: sendDefaultImpl call timeout
。
この異常はなく、鉛正しく設定brokerip MQサービスコンソールのログを記録する予定です、あなたはブローカーの設定情報を表示することができます。
上記は、 192.168.128.3:10911
容器ドッカー内部ホストIPであるIP、です。必要である、IPクラウドホストIPに設定する必要があり broker.conf
、変更する brokerIP1
パラメータを。
- MQのMQコンソールが正しくサービス情報を表示することはできません。
主な問題は、エラーを設定するネームサーバのIPです。ビューMQコンソール操作およびメンテナンスページ、あなたが接続し、この時点でのネームサーバのアドレス情報を見ることができます。
ここでは、のために設定されたアドレスを確認することができます127.0.0.1:9876
。ドッキングウィンドウコンテナを使用して、ここで、MQコンソールので、コンテナの直接のアクセスは 127.0.0.1:9876
、むしろ適切な手順内のホストよりも、独自の内部にアクセスします。
ここでは、環境変数のドッキングウィンドウを設定する必要があり、次のように、構成は次のとおりです。
- JAVA_OPTS= -Dlogging.level.root=info -Drocketmq.namesrv.addr=rmqnamesrv:9876