diff --git a/docs/pulsar-design.docx b/docs/pulsar-design.docx new file mode 100644 index 0000000..f8b9c5a Binary files /dev/null and b/docs/pulsar-design.docx differ diff --git a/docs/~$lsar-design.docx b/docs/~$lsar-design.docx new file mode 100644 index 0000000..9bf24d2 Binary files /dev/null and b/docs/~$lsar-design.docx differ diff --git a/tools/MQTest/MQTestResult.md b/tools/MQTest/MQTestResult.md new file mode 100644 index 0000000..623abb5 --- /dev/null +++ b/tools/MQTest/MQTestResult.md @@ -0,0 +1,70 @@ +## Test Environment + +Five machines with ubuntu 18.04 + +- CPU: Intel Xeon Gold 6152(22 cores, 44 threads) + +- Memory:32G * 4 + +## Test Result + +### RocketMQ + +#### 1.one broker + +| topicNumber | CPU (%) | TPS Produce | TPS Consume | disk util(%) | delay(ms) | +| ----------- | ------- | ----------- | ----------- | ------------ | --------- | +| 0 | 2.11 | 0 | 0 | 0 | 0 | +| 100 | 625 | 76,245.38 | 76,233.48 | 82.84 | 10 | +| 1000 | 780 | 73,644.00 | 72,582.00 | 91.75 | 30 | +| 3000 | 780 | 74,737.85 | 61,315.64 | 93.01 | 101 | +| 5000 | 801 | 73,919.80 | 52,581.76 | 96.89 | 167 | +| 6000 | 789 | 71,059.79 | 44,962.30 | 92.72 | 197 | +| 7000 | 823 | 72,114.44 | 43,316.24 | 93.33 | 221 | + +- **Exception occurs when topic number becomes 8000** +- **The Number of threads used to produce and consume message is 100 and the payload is 1Kb** +- **Average data over a period of one minute** + +#### 2.three brokers + +| topicNumber | TPS Producer | TPS Consumer | disk util(%) | delay(ms) | +| ----------- | :----------- | ------------ | ------------ | ------------- | +| 100 | 30,985.00 | 30,845.00 | 97.78 | 29 | +| 1000 | 30,529.19 | 29,950.50 | 99.56 | 93 | +| 3000 | 30,477.55 | 27,195.28 | 99.92 | 230 | +| 5000 | 30,477.55 | 27,195.28 | 100 | 339 | +| 7000 | 30,902.93 | 11,646.71 | 100 | up to 170000 | +| 8000 | 31,491.40 | 9,426.19 | 99.99 | up to 140000 | +| 9000 | 31,994.80 | 7,031.48 | 100 | up to 350000 | + +- **When the topic number comes to 10000, there is an exception** +- **The TPS is the average data of three brokers** + + + +### Pulsar + +#### 1. one broker + +| topicNumber | TPS Produce | TPS Consume | disk util(%) | +| ----------- | ----------- | ----------- | ------------ | +| 4000 | 31977 | 31691 | >=97 | +| 6000 | 29,553.00 | 28,473.00 | >=97 | +| 8000 | 29680.9 | 29931.55 | >=97 | +| 10000 | 0 | 0 | 0 | + +#### 2. three brokers + +| topicNumber | CPU (%) | TPS Produce(average) | TPS Consume(average) | disk util(%) | Mem(G) | +| -------------- | ------- | -------------------- | -------------------- | -------------- | ------ | +| 1000(10*100) | 780 | 64,603.00 | 50,615.29 | >=97 | 22 | +| 5000(10*500) | 801 | 36134.42 | 32257.58 | >=97 | 38 | +| 10000(10*1000) | | 31378.69 | 32,078 | >=97 | 46.7 | +| 10000(20*500) | | 59832.1 | 59,773 | >=97 | 47.1 | +| 30000(100*300) | | 45,669.31 | 46,779.04 | >=97 | 59.2 | + +- **Disks generally maintain a write rate of 89% and a read rate of 9%. Writing occupies most of the IO, which may cause timeout.** +- **Tps is 0 when topics are created in the early stage, and the time is about 6-8 minutes** + +- **Delays are maintained at 100ms-300ms** diff --git a/tools/MQTest/RocketMQTest/.gitignore b/tools/MQTest/RocketMQTest/.gitignore new file mode 100644 index 0000000..5eae1a8 --- /dev/null +++ b/tools/MQTest/RocketMQTest/.gitignore @@ -0,0 +1,26 @@ +# Compiled class file +*.class + +# Log file +*.log + +# BlueJ files +*.ctxt + +# Mobile Tools for Java (J2ME) +.mtj.tmp/ + +# Package Files # +*.jar +*.war +*.nar +*.ear +*.zip +*.tar.gz +*.rar + +# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml +hs_err_pid* + +# Store files for rmq +docker-rocketmq/rmq/rmq/store/* \ No newline at end of file diff --git a/tools/MQTest/RocketMQTest/README.md b/tools/MQTest/RocketMQTest/README.md new file mode 100644 index 0000000..3b08d0b --- /dev/null +++ b/tools/MQTest/RocketMQTest/README.md @@ -0,0 +1,66 @@ +# RocketMQ Test + +## 1. Preparation + +Before starting, the following information should be prepared: + +- Java 1.8 or above +- docker-compose 1.24.0 or above + +Move to this directory and give scripts execution permission +```SHELL +cd ~/RocketMQTest +chmod +x ./scripts/*.sh +``` + +## 2. Dockers for RocketMQ +Docker files are from: + +[github.com/foxiswho/docker-rocketmq](github.com/foxiswho/docker-rocketmq) + +- Start one nameserver, one broker and one console with: + +```shell +./scripts/start.sh +``` + +- If only need to setup one broker on the server,use: +```SHELL +./scripts/start_broker.sh +``` + +- Move to the corresponding directory and use the following command to end dockers: + +``` +docker-compose down +``` + +- Open dashboard in browser: + +``` +localhost:8180 +``` + + + +## 3. Producer and Consumer Client + +- Firstly, compile and package the target files: + +```shell +./scripts/build.sh +``` + +- Run producer client with parameters: + +```sh +./scripts/run_producer.sh $0 $1 +``` + +- Run consumer client with parameters: + +```shell +./scripts/run_consumer.sh $0 $1 +``` + +where $0 stands for the thread numbers and $1 stands for the topic numbers. \ No newline at end of file diff --git a/tools/MQTest/RocketMQTest/client/pom.xml b/tools/MQTest/RocketMQTest/client/pom.xml new file mode 100644 index 0000000..ebe36e1 --- /dev/null +++ b/tools/MQTest/RocketMQTest/client/pom.xml @@ -0,0 +1,46 @@ + + + 4.0.0 + + org.rmq + test + 0.0.1-SNAPSHOT + + 1.6 + 1.6 + + + + org.apache.rocketmq + rocketmq-client + 4.7.0 + + + + commons-cli + commons-cli + 1.4 + + + + + + maven-assembly-plugin + + jar-with-dependencies + + + + make-assembly + package + + single + + + + + + + \ No newline at end of file diff --git a/tools/MQTest/RocketMQTest/client/src/main/java/demo/ConsumerRunnable.java b/tools/MQTest/RocketMQTest/client/src/main/java/demo/ConsumerRunnable.java new file mode 100644 index 0000000..c5736c6 --- /dev/null +++ b/tools/MQTest/RocketMQTest/client/src/main/java/demo/ConsumerRunnable.java @@ -0,0 +1,57 @@ +package org.demo; + +import java.util.List; +import java.util.concurrent.TimeUnit; + +import org.apache.rocketmq.client.consumer.DefaultMQPushConsumer; +import org.apache.rocketmq.client.consumer.listener. ConsumeConcurrentlyContext; +import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyStatus; +import org.apache.rocketmq.client.consumer.listener.MessageListenerConcurrently; +import org.apache.rocketmq.common.consumer.ConsumeFromWhere; +import org.apache.rocketmq.common.message.MessageExt; + +import java.util.Arrays; + + + +public class ConsumerRunnable implements Runnable{ + + private DefaultMQPushConsumer consumer = null; + + private String url = null; + private String topicName = null; + private String tagName = null; + private int topicNumber = 0; + + public ConsumerRunnable(String url, String topicName, String tagName, int topicNumber) { + this.url = url; + this.topicName = topicName; + this.tagName = tagName; + this.topicNumber = topicNumber; + this.consumer = new DefaultMQPushConsumer("consumerGroup-"+topicName); + this.consumer.setNamesrvAddr(url); + + } + + + @Override + public void run(){ + try { + for(int i = 0; i < topicNumber; i++){ + consumer.subscribe(topicName+"-"+Integer.toString(i), tagName); + } + + consumer.registerMessageListener(new MessageListenerConcurrently() { + @Override + public ConsumeConcurrentlyStatus consumeMessage(List msgs, ConsumeConcurrentlyContext context) { + return ConsumeConcurrentlyStatus.CONSUME_SUCCESS; + } + }); + + consumer.start(); + System.out.printf("%s Consumer Started.%n", Thread.currentThread().getName()); + }catch (Exception e){ + e.printStackTrace(); + } + } +} \ No newline at end of file diff --git a/tools/MQTest/RocketMQTest/client/src/main/java/demo/ConsumerThreadPool.java b/tools/MQTest/RocketMQTest/client/src/main/java/demo/ConsumerThreadPool.java new file mode 100644 index 0000000..3a0391a --- /dev/null +++ b/tools/MQTest/RocketMQTest/client/src/main/java/demo/ConsumerThreadPool.java @@ -0,0 +1,60 @@ +package org.demo; + + +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import org.apache.commons.cli.*; + + +public class ConsumerThreadPool { + private Config config; + + public ConsumerThreadPool(String[] args){ + this.config = new Config(); + this.getOptions(args); + } + + private void getOptions(String[] args){ + Options options = new Options(); + options.addOption("t",true,"topic number"); + options.addOption("n",true,"thread number"); + options.addOption("u",true,"url of namesrv"); + + + CommandLineParser parser = new DefaultParser(); + try{ + CommandLine cmd = parser.parse(options,args); + config.topicNumber = Integer.parseInt(cmd.getOptionValue("t","100")); + config.threadNumber = Integer.parseInt(cmd.getOptionValue("n","100")); + config.url = cmd.getOptionValue("u","localhost:9876"); + }catch (ParseException e){ + e.printStackTrace(); + System.err.println("-- fail to get options --"); + HelpFormatter hf = new HelpFormatter(); + hf.printHelp("Consumer",options,true); + } + + } + public static void main(String[] args) { + ConsumerThreadPool ctp = new ConsumerThreadPool(args); + int threadNumber = ctp.config.threadNumber; + int topicNumberPerThread = ctp.config.topicNumber/ctp.config.threadNumber; + String url = ctp.config.url; + + String topicName = "topic"; + String tagName = "*"; + + ExecutorService pool = Executors.newCachedThreadPool(); + for (int threadIndex = 0; threadIndex < threadNumber; threadIndex++) { + pool.submit(new ConsumerRunnable(url, topicName + Integer.toString(threadIndex), tagName, topicNumberPerThread)); + } + pool.shutdown(); + } + + private class Config{ + int topicNumber; + int threadNumber; + String url; + } +} + diff --git a/tools/MQTest/RocketMQTest/client/src/main/java/demo/ProducerRunnable.java b/tools/MQTest/RocketMQTest/client/src/main/java/demo/ProducerRunnable.java new file mode 100644 index 0000000..14f4520 --- /dev/null +++ b/tools/MQTest/RocketMQTest/client/src/main/java/demo/ProducerRunnable.java @@ -0,0 +1,96 @@ +package org.demo; + +import org.apache.rocketmq.client.producer.DefaultMQProducer; +import org.apache.rocketmq.common.message.Message; +import org.apache.rocketmq.client.producer.SendCallback; +import org.apache.rocketmq.client.producer.SendResult; +import org.apache.rocketmq.client.producer.SendStatus; + +import javax.swing.*; +import java.util.Arrays; + +public class ProducerRunnable implements Runnable{ + + private DefaultMQProducer producer; + + private String url = null; + private String topicName = null; + private int topicNumber = 0; + private int sendType = 0; + private int sleepTime = 0; + private int size = 0; + + public ProducerRunnable(String url, String topicName, int topicNumber,int sendType,int size,int sleepTime) { + this.url = url; + this.topicName = topicName; + this.topicNumber = topicNumber; + this.sendType = sendType; + this.sleepTime = sleepTime; + this.size = size; + + this.producer = new DefaultMQProducer("producerGroup-"+ topicName); + this.producer.setNamesrvAddr(url); + } + + private static String createSpecificSizeString(int size){ + byte[] temp = new byte[size]; + Arrays.fill(temp, (byte)0); + String temp_str = new String(temp); + return temp_str; + } + + private void sendMessage(Message message,int sendType) throws Exception{ + switch (sendType) { + case 0: + producer.send(message); + break; + case 1: + producer.send(message,new SendCallback(){ + @Override + public void onSuccess(SendResult sendResult){} + + @Override + public void onException(Throwable e){ + e.printStackTrace(); + System.err.println("---fail to send message---"); + } + }); + break; + case 2: + producer.sendOneway(message); + break; + default: + System.err.println("---Unsupport send type---"); + break; + } + } + + private void startProducer(String topicName) throws Exception { + String tempStr = createSpecificSizeString(size); + int count = 0; + while (true) { + for(int i = 0; i < topicNumber; i++){ + Message message = new Message(topicName+"-"+Integer.toString(i),"TagTest",tempStr.getBytes()); + sendMessage(message,sendType); + count += 1; + Thread.sleep(sleepTime); + } + + } + } + + @Override + public void run(){ + try { + + + producer.setVipChannelEnabled(false); + + producer.start(); + System.out.printf("%s Producer Started.%n", Thread.currentThread().getName()); + startProducer(topicName); + }catch (Exception e){ + e.printStackTrace(); + } + } +} \ No newline at end of file diff --git a/tools/MQTest/RocketMQTest/client/src/main/java/demo/ProducerThreadPool.java b/tools/MQTest/RocketMQTest/client/src/main/java/demo/ProducerThreadPool.java new file mode 100644 index 0000000..0905495 --- /dev/null +++ b/tools/MQTest/RocketMQTest/client/src/main/java/demo/ProducerThreadPool.java @@ -0,0 +1,70 @@ +package org.demo; + +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import org.apache.commons.cli.*; + + + +public class ProducerThreadPool { + private Config config; + + public ProducerThreadPool(String[] args){ + this.config = new Config(); + this.getOptions(args); + } + + private void getOptions(String[] args){ + Options options = new Options(); + options.addOption("t",true,"topic number"); + options.addOption("n",true,"thread number"); + options.addOption("y",true,"send message type"); + options.addOption("u",true,"url of namesrv"); + options.addOption("st",true,"sleep time"); + options.addOption("sm",true,"size of message"); + + CommandLineParser parser = new DefaultParser(); + try{ + CommandLine cmd = parser.parse(options,args); + config.topicNumber = Integer.parseInt(cmd.getOptionValue("t","100")); + config.threadNumber = Integer.parseInt(cmd.getOptionValue("n","100")); + config.sendType = Integer.parseInt(cmd.getOptionValue("y","0")); + config.url = cmd.getOptionValue("u","localhost:9876"); + config.sleepTime = Integer.parseInt(cmd.getOptionValue("st","0")); + config.messageSize = Integer.parseInt(cmd.getOptionValue("sm","1024")); + }catch (ParseException e){ + e.printStackTrace(); + System.err.println("--- fail to get options ---"); + HelpFormatter hf = new HelpFormatter(); + hf.printHelp("Producer",options,true); + } + + } + + public static void main(String[] args) { + ProducerThreadPool ptp = new ProducerThreadPool(args); + int threadNumber = ptp.config.threadNumber; + int topicNumberPerThread = ptp.config.topicNumber/ptp.config.threadNumber; + int sendType = ptp.config.sendType; + String url = ptp.config.url; + int messageSize = ptp.config.messageSize; + + String topicName = "topic"; + int sleepTime = ptp.config.sleepTime; + + ExecutorService pool = Executors.newCachedThreadPool(); + for (int threadIndex = 0; threadIndex < threadNumber; threadIndex++) { + pool.submit(new ProducerRunnable(url, topicName + Integer.toString(threadIndex),topicNumberPerThread,sendType,messageSize,sleepTime)); + } + pool.shutdown(); + } + + private class Config{ + int topicNumber; + int threadNumber; + int sendType = 0; + String url; + int sleepTime = 0; + int messageSize = 1024; + } +} diff --git a/tools/MQTest/RocketMQTest/docker-rocketmq/rmq/docker-compose.yml b/tools/MQTest/RocketMQTest/docker-rocketmq/rmq/docker-compose.yml new file mode 100644 index 0000000..7851db0 --- /dev/null +++ b/tools/MQTest/RocketMQTest/docker-rocketmq/rmq/docker-compose.yml @@ -0,0 +1,59 @@ +version: '3.5' + +services: + rmqnamesrv: + image: foxiswho/rocketmq:4.7.0 +# image: registry.cn-hangzhou.aliyuncs.com/foxiswho/rocketmq:4.7.0 + container_name: rmqnamesrv + ports: + - 9876:9876 + volumes: + - ./rmqs/logs:/opt/logs + - ./rmqs/store:/opt/store + environment: + JAVA_OPT_EXT: "-Duser.home=/opt -Xms16G -Xmx16G -Xmn8G" + command: ["sh","mqnamesrv"] + networks: + rmq: + aliases: + - rmqnamesrv + rmqbroker: + image: foxiswho/rocketmq:4.7.0 +# image: registry.cn-hangzhou.aliyuncs.com/foxiswho/rocketmq:4.7.0 + container_name: rmqbroker + ports: + - 10909:10909 + - 10911:10911 + volumes: + - ./rmq/logs:/opt/logs + - ./rmq/store:/opt/store + - ./rmq/brokerconf/broker.conf:/etc/rocketmq/broker.conf + environment: + JAVA_OPT_EXT: "-Duser.home=/opt -Xms16G -Xmx16G -Xmn8G" + command: ["sh","mqbroker","-c","/etc/rocketmq/broker.conf","-n","rmqnamesrv:9876","autoCreateTopicEnable=true"] + depends_on: + - rmqnamesrv + networks: + rmq: + aliases: + - rmqbroker + + + rmqconsole: + image: styletang/rocketmq-console-ng + container_name: rmqconsole + ports: + - 8180:8080 + environment: + JAVA_OPTS: "-Drocketmq.namesrv.addr=rmqnamesrv:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false" + depends_on: + - rmqnamesrv + networks: + rmq: + aliases: + - rmqconsole + +networks: + rmq: + name: rmq + driver: bridge diff --git a/tools/MQTest/RocketMQTest/docker-rocketmq/rmq/rmq/brokerconf/broker.conf b/tools/MQTest/RocketMQTest/docker-rocketmq/rmq/rmq/brokerconf/broker.conf new file mode 100644 index 0000000..192dea0 --- /dev/null +++ b/tools/MQTest/RocketMQTest/docker-rocketmq/rmq/rmq/brokerconf/broker.conf @@ -0,0 +1,98 @@ +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +#name of broker cluster +brokerClusterName=DefaultCluster + +#name of broker,should be different in defferent brokers + +brokerName=broker-a + +#0 for Master,>0 for Slave +brokerId=0 + +namesrvAddr=$(namesrvHostIp):9876 + +brokerIP1=$(brokerHostIp) + +#role of broker +#- ASYNC_MASTER +#- SYNC_MASTER +#- SLAVE +brokerRole=ASYNC_MASTER + +#- ASYNC_FLUSH +#- SYNC_FLUSH +flushDiskType=ASYNC_FLUSH + +#try to avoid system busy/broker busy +transientStorePoolEnable=true +waitTimeMillsInSendQueue=30000 + +#sendMessageThreadPoolNums=512 +sendThreadPoolQueueCapacity = 30000 + +#pullMessageThreadPoolNums=128 + + +#automatically create a topic that does not exist on the server, +#and the number of queues created by default +defaultTopicQueueNums=4 +autoCreateTopicEnable=true + + +autoCreateSubscriptionGroup=true + + +listenPort=10911 + +#when to delete files,default 4am +deleteWhen=04 + +fileReservedTime=120 + +#commitLog default size +mapedFileSizeCommitLog=1073741824 + +#size of consumeQueue,default 30w +mapedFileSizeConsumeQueue=300000 + +#destroyMapedFileIntervalForcibly=120000 +#redeleteHangedFileInterval=120000 + +#check disk space +diskMaxUsedSpaceRatio=88 +#store path +#storePathRootDir=yourPath/store +#commitLog +#storePathCommitLog=yourPath/store/commitlog +#consumeQueue +#storePathConsumeQueue=yourPath/store/consumequeue +#Index +#storePathIndex=yourPath/store/index +#checkpoint +#storeCheckpoint=yourPath/store/checkpoint +#abortFile +#abortFile=yourPath/store/abort + +#maxMessageSize=65536 + + +#flushCommitLogLeastPages=4 +#flushConsumeQueueLeastPages=2 +#flushCommitLogThoroughInterval=10000 +#flushConsumeQueueThoroughInterval=60000 + diff --git a/tools/MQTest/RocketMQTest/docker-rocketmq/rmq/rmq/docker-compose.yml b/tools/MQTest/RocketMQTest/docker-rocketmq/rmq/rmq/docker-compose.yml new file mode 100644 index 0000000..7a5fb5e --- /dev/null +++ b/tools/MQTest/RocketMQTest/docker-rocketmq/rmq/rmq/docker-compose.yml @@ -0,0 +1,26 @@ +version: '3.5' + +services: + rmqbroker: + image: foxiswho/rocketmq:4.7.0 +# image: registry.cn-hangzhou.aliyuncs.com/foxiswho/rocketmq:4.7.0 + container_name: rmqbroker + ports: + - 10909:10909 + - 10911:10911 + volumes: + - ./logs:/opt/logs + - ./store:/opt/store + - ./brokerconf/broker.conf:/etc/rocketmq/broker.conf + environment: + JAVA_OPT_EXT: "-Duser.home=/opt -Xms16G -Xmx16G -Xmn8G" + command: ["sh","mqbroker","-c","/etc/rocketmq/broker.conf","-n","$(rmqnamesrvHostIP):9876","autoCreateTopicEnable=true"] + networks: + rmq: + aliases: + - rmqbroker + +networks: + rmq: + name: rmq + driver: bridge diff --git a/tools/MQTest/RocketMQTest/script/build.sh b/tools/MQTest/RocketMQTest/script/build.sh new file mode 100644 index 0000000..cc6b959 --- /dev/null +++ b/tools/MQTest/RocketMQTest/script/build.sh @@ -0,0 +1,5 @@ +#!/usr/bin/env bash + +cd ./client + +mvn clean compile package diff --git a/tools/MQTest/RocketMQTest/script/run_consumer.sh b/tools/MQTest/RocketMQTest/script/run_consumer.sh new file mode 100644 index 0000000..2a9b0c7 --- /dev/null +++ b/tools/MQTest/RocketMQTest/script/run_consumer.sh @@ -0,0 +1,4 @@ +#!/usr/bin/env bash + +#$0 for thread numbers,$1 for topic numbers +java -cp ./client/target/test-0.0.1-SNAPSHOT-jar-with-dependencies.jar org.demo.ConsumerThreadPool -n $0 -t $1 \ No newline at end of file diff --git a/tools/MQTest/RocketMQTest/script/run_producer.sh b/tools/MQTest/RocketMQTest/script/run_producer.sh new file mode 100644 index 0000000..1b87930 --- /dev/null +++ b/tools/MQTest/RocketMQTest/script/run_producer.sh @@ -0,0 +1,4 @@ +#!/usr/bin/env bash + +#$0 for thread numbers,$1 for topic numbers +java -cp ./client/target/test-0.0.1-SNAPSHOT-jar-with-dependencies.jar org.demo.ProducerThreadPool -n $0 -t $1 \ No newline at end of file diff --git a/tools/MQTest/RocketMQTest/script/start.sh b/tools/MQTest/RocketMQTest/script/start.sh new file mode 100644 index 0000000..ff52b63 --- /dev/null +++ b/tools/MQTest/RocketMQTest/script/start.sh @@ -0,0 +1,25 @@ +#!/usr/bin/env bash + +cd ./docker-rocketmq/rmq +rm -rf ./rmqs/logs +rm -rf ./rmqs/store +rm -rf ./rmq/logs +rm -rf ./rmq/store + +mkdir -p ./rmqs/logs +mkdir -p ./rmqs/store +mkdir -p ./rmq/logs +mkdir -p ./rmq/store + +chmod -R 777 ./rmqs/logs +chmod -R 777 ./rmqs/store +chmod -R 777 ./rmq/logs +chmod -R 777 ./rmq/store + + +# start dockers +docker-compose up -d + + +# show dockers of rocketmq +docker ps |grep rocketmq \ No newline at end of file diff --git a/tools/MQTest/RocketMQTest/script/start_broker.sh b/tools/MQTest/RocketMQTest/script/start_broker.sh new file mode 100644 index 0000000..57fc23d --- /dev/null +++ b/tools/MQTest/RocketMQTest/script/start_broker.sh @@ -0,0 +1,21 @@ +#!/usr/bin/env bash + +cd ./docker-rocketmq/rmq/rmq +rm -rf ./logs +rm -rf ./store + + +mkdir -p ./logs +mkdir -p ./store + + +chmod -R 777 ./logs +chmod -R 777 ./store + + +# start docker +docker-compose up -d + + +# show dockers of rocketmq +docker ps |grep rocketmq \ No newline at end of file