Skip to content

Commit

Permalink
Merge pull request #24 from ni-ze/quickStart
Browse files Browse the repository at this point in the history
docker-compose quick start
  • Loading branch information
ni-ze authored Jul 28, 2022
2 parents c89d62c + 0896b7e commit c162445
Show file tree
Hide file tree
Showing 13 changed files with 247 additions and 109 deletions.
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -30,4 +30,6 @@ nbdist/
node_modules/
_book/

*/dependency-reduced-pom.xml
*/dependency-reduced-pom.xml
/rsqldb-disk/log/
/rsqldb-disk/server/dipper.cs
119 changes: 27 additions & 92 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,118 +12,53 @@ rsqldb 为 Rocketmq Streams 的开发提供了基于SQL的开发体验, 让基


## Quickstart
### 运行环境
- JDK 1.8及以上
- Maven 3.2及以上

### 在本地安装RocketMQ-Streams
rsqldb依赖的RocketMQ-Streams版本为1.0.2-preview-SNAPSHOT(RocketMQ-Streams近期会做一次发版,发版之后省略该步骤)。
### 本地安装docker,[安装链接](https://docs.docker.com/desktop/install/mac-install/)
安装后启动docker

### 下载rsqldb工程
```shell
git clone https://github.com/apache/rocketmq-streams.git
#切换到main分支
mvn clean install -DskipTest -U
```

### 下载rsqldb工程并本地构建
```xml
git clone https://github.com/alibaba/rsqldb.git

mvn clean package -DskipTest -U
```

### 拷贝安装压缩包并解压

进入rsqldb-disk模块下,将rsqldb-distribution.tar.gz安装包拷贝到任意目录,并执行命令解压并进入解压目录:
```xml
tar -zxvf rsqldb-distribution.tar.gz;cd rsqldb
```


### 启动rsqldb服务端
### 进入工程目录并执行启动docker
```shell
sh bin/startAll.sh
cd rsqldb
docker-compose -f docker-compose.yml up
```

### 配置sql文件
sendDataFromFile.sql中创建的任务,需要从本地文件指定位置读取数据,所以需要修改sendDataFromFile.sql中filePath变量的位置,修改为数据文件data.txt的绝对路径。


### 提交任务
执行路径依然在rsqldb解压目录下
### 进入rsqldb-client容器
#### 提交任务
```shell
sh client/clientExector.sh submitTask sendDataFromFile.sql
sh clientExector.sh submitTask rocketmq.sql
```
sendDataFromFile.sql会从本地文件data.txt中读取数据,过滤出只含有field_1=1的数据,并将结果数据输出到日志中。
任务为向RocketMQ写入数据,过滤出数据中field_1=1的数据

### 启动任务
在rsqldb解压目录下执行,tail运行日志,为查看结果做准备。
#### 开始任务
```shell
tail -f log/rsqldb-runner.log
sh clientExector.sh startTask
```

另开一个shell窗口,进入解压后的rsqldb目录,执行以下命令启动任务,1分钟后,查看日志输出,会将执行结果打印到日志中。
#### 向RocketMQ中写入数据
```shell
sh client/clientExector.sh startTask
java -cp RocketmqTest-1.0-SNAPSHOT.jar com.test.rocketmqtest.producer.Producer
```

观察rsqldb-runner.log输出,输出结果中,只包含field_1=1的数据。

### 查询任务
在rsqldb解压目录下执行
向RocketMQ的rsqldb-source topic中写入RocketmqTest-1.0-SNAPSHOT.jar包中默认数据,数据如data.txt文件所示。
使用Producer类发送消息时,允许带三个参数:topic、groupId、数据文件全路径,可以向RocketMQ任意topic发送任意数据。
#### 查看结果输出
```shell
sh client/clientExector.sh queryTask
java -cp RocketmqTest-1.0-SNAPSHOT.jar com.test.rocketmqtest.consumer.Consumer
```
返回已经提交的任务列表。

### 停止任务
在rsqldb解压目录下执行
```shell
sh client/clientExector.sh stopTask
从RocketMQ的rsqldb-sink topic中读出结果数据,每执行一次producer会有一行输出(第一次需要等待1min轮询提交的任务):
```xml
Receive New Messages: body[{"field_3":"3","field_4":"4","field_1":"1","field_2":"2"}]
```
Consumer类允许带两个参数:topic、groupId,可以指定topic消费RocketMQ数据。

### 从RocketMQ中读取数据并处理
上述示例为从本地文件data.txt中读取数据,更为常用的用法是从RocketMQ中读取数据处理,下面给出具体步骤:

- 本地安装并启动RocketMQ,[安装文档](https://rocketmq.apache.org/docs/quick-start/)
- 启动rsqldb服务端
```shell
sh bin/startAll.sh
```
- 提交任务
```shell
sh client/clientExector.sh submitTask rocketmq.sql
```

rocketmq.sql会从RocketMQ的rsqldb-source中读取数据,过滤出field_1=1的数据,并将结果输出到日志文件中。
## 其他启动方式
### 本地jar包启动
[本地jar包启动](docs/other_quick_start/本地jar包启动.md)
### 本地工程启动
[本地工程启动](docs/other_quick_start/本地工程启动.md)

- 查看输出
```shell
tail -f log/rsqldb-runner.log
```
- 另开一个窗口,启动任务
```shell
sh client/clientExector.sh startTask
```
- 向RocketMQ中生产数据:topic为rsqldb-source,与rocketmq.sql任务中的topic名称保持一致,向该topic写入data.txt文件中的数据。

- 观察输出,在输出结果中,只包含field_1=1的数据。

## 工程本地运行

### 启动服务端
- 启动rsqldb-runner执行任务;

主方法中添加home.dir参数,home.dir指向rsqldb-disk的绝对路径;
- 启动rsqldb-server接收任务;

主方法中添加home.dir参数,home.dir指向rsqldb-disk的绝对路径;
### 启动客户端
- 提交任务

给SubmitTask类添加启动参数,参数一:rsqldb-disk的绝对路径;参数二:sql任务的文件名称,例如sendDataFromFile.sql;

- 启动任务

直接运行StartTask类,无须参数;

70 changes: 70 additions & 0 deletions docker-compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
---
version: '3.5'

services:
#Service for nameserver
namesrv:
image: apache/rocketmq:4.9.4
hostname: namesrv
container_name: rmqnamesrv
user: root
networks:
- rsqldb-quickstart
cap_add:
- SYS_PTRACE
ports:
- "9876:9876"
command: sh mqnamesrv

#Service for broker
broker:
image: apache/rocketmq:4.9.4
hostname: broker
container_name: rmqbroker
user: root
networks:
- rsqldb-quickstart
cap_add:
- SYS_PTRACE
depends_on:
- namesrv
ports:
- "10909:10909"
- "10911:10911"
- "10912:10912"
environment:
- NAMESRV_ADDR=namesrv:9876
command: sh mqbroker -c /home/rocketmq/rocketmq-4.9.4/conf/broker.conf

rsqldb:
image: unclerangoo/rsqldb:0.1
hostname: rsqldb
container_name: rsqldb
networks:
- rsqldb-quickstart
cap_add:
- SYS_PTRACE
ports:
- "8080:8080"
depends_on:
- namesrv
- broker
environment:
- NAMESRV_ADDR=namesrv:9876

rsqldb-client:
image: unclerangoo/rsqldb-client:0.1
hostname: rsqldb-client
container_name: rsqldb-client
networks:
- rsqldb-quickstart
cap_add:
- SYS_PTRACE
depends_on:
- rsqldb
environment:
- rsqldb=rsqldb:8080
- NAMESRV_ADDR=namesrv:9876
networks:
rsqldb-quickstart:
name: rsqldb-quickstart
98 changes: 98 additions & 0 deletions docs/other_quick_start/本地jar包启动.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
## jar包启动

### 运行环境
- JDK 1.8及以上
- Maven 3.2及以上

### 在本地安装RocketMQ-Streams
rsqldb依赖的RocketMQ-Streams版本为1.0.2-preview-SNAPSHOT(RocketMQ-Streams近期会做一次发版,发版之后省略该步骤)。

```shell
git clone https://github.com/apache/rocketmq-streams.git
#切换到main分支
mvn clean install -DskipTest -U
```

### 下载rsqldb工程并本地构建
```xml
git clone https://github.com/alibaba/rsqldb.git

mvn clean package -DskipTest -U
```

### 拷贝安装压缩包并解压

进入rsqldb-disk模块下,将rsqldb-distribution.tar.gz安装包拷贝到任意目录,并执行命令解压并进入解压目录:
```xml
tar -zxvf rsqldb-distribution.tar.gz;cd rsqldb
```


### 启动rsqldb服务端
```shell
sh bin/startAll.sh
```

### 配置sql文件
sendDataFromFile.sql中创建的任务,需要从本地文件指定位置读取数据,所以需要修改sendDataFromFile.sql中filePath变量的位置,修改为数据文件data.txt的绝对路径。


### 提交任务
执行路径依然在rsqldb解压目录下
```shell
sh client/clientExector.sh submitTask sendDataFromFile.sql
```
sendDataFromFile.sql会从本地文件data.txt中读取数据,过滤出只含有field_1=1的数据,并将结果数据输出到日志中。

### 启动任务
在rsqldb解压目录下执行,tail运行日志,为查看结果做准备。
```shell
tail -f log/rsqldb-runner.log
```

另开一个shell窗口,进入解压后的rsqldb目录,执行以下命令启动任务,1分钟后,查看日志输出,会将执行结果打印到日志中。
```shell
sh client/clientExector.sh startTask
```

观察rsqldb-runner.log输出,输出结果中,只包含field_1=1的数据。

### 查询任务
在rsqldb解压目录下执行
```shell
sh client/clientExector.sh queryTask
```
返回已经提交的任务列表。

### 停止任务
在rsqldb解压目录下执行
```shell
sh client/clientExector.sh stopTask
```

### 从RocketMQ中读取数据并处理
上述示例为从本地文件data.txt中读取数据,更为常用的用法是从RocketMQ中读取数据处理,下面给出具体步骤:

- 本地安装并启动RocketMQ,[安装文档](https://rocketmq.apache.org/docs/quick-start/)
- 启动rsqldb服务端
```shell
sh bin/startAll.sh
```
- 提交任务
```shell
sh client/clientExector.sh submitTask rocketmq.sql
```

rocketmq.sql会从RocketMQ的rsqldb-source中读取数据,过滤出field_1=1的数据,并将结果输出到日志文件中。

- 查看输出
```shell
tail -f log/rsqldb-runner.log
```
- 另开一个窗口,启动任务
```shell
sh client/clientExector.sh startTask
```
- 向RocketMQ中生产数据:topic为rsqldb-source,与rocketmq.sql任务中的topic名称保持一致,向该topic写入data.txt文件中的数据。

- 观察输出,在输出结果中,只包含field_1=1的数据。
17 changes: 17 additions & 0 deletions docs/other_quick_start/本地工程启动.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
## 工程本地运行

### 启动服务端
- 启动rsqldb-runner执行任务;

主方法中添加home.dir参数,home.dir指向rsqldb-disk的绝对路径;
- 启动rsqldb-server接收任务;

主方法中添加home.dir参数,home.dir指向rsqldb-disk的绝对路径;
### 启动客户端
- 提交任务

给SubmitTask类添加启动参数,参数一:rsqldb-disk的绝对路径;参数二:sql任务的文件名称,例如sendDataFromFile.sql;

- 启动任务

直接运行StartTask类,无须参数;
1 change: 1 addition & 0 deletions rsqldb-client/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
</dependencies>

<build>
<finalName>rsqldb-client</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,11 +34,21 @@
*/

public class Constants {
public static String submitTask = "http://localhost:8080/command/task/submit";
private static String rsqldb;

public static String startTask = "http://localhost:8080/command/task/start";
static {
rsqldb = System.getenv("rsqldb");

public static String queryTask = "http://localhost:8080/command/task/list";
if (rsqldb == null) {
rsqldb = "localhost:8080";
}
}

public static String stopTask = "http://localhost:8080/command/task/stop";
public static String submitTask = "http://" + rsqldb + "/command/task/submit";

public static String startTask = "http://" + rsqldb + "/command/task/start";

public static String queryTask = "http://" + rsqldb + "/command/task/list";

public static String stopTask = "http://" + rsqldb + "/command/task/stop";
}
4 changes: 2 additions & 2 deletions rsqldb-disk/bin/startSqlReceiver.sh
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@ set -e
export JAVA_HOME
export JAVA="$JAVA_HOME/bin/java"
export BASE_DIR=$(dirname $0)/..
export CLASSPATH=.:${BASE_DIR}/conf:${BASE_DIR}/server/*:${BASE_DIR}/client/*:${CLASSPATH}}
export CLASSPATH=.:${BASE_DIR}/conf:${BASE_DIR}/server/*:${BASE_DIR}/client/*:${CLASSPATH}

JVM_CONFIG="-Xms2048m -Xmx2048m -Xmn1024m"
JVM_CONFIG="-Xms512m -Xmx512m -Xmn128m"

JAVA_OPTIONS=${JAVA_OPTIONS:-}

Expand Down
2 changes: 1 addition & 1 deletion rsqldb-disk/bin/startTaskExecutor.sh
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ export JAVA="$JAVA_HOME/bin/java"
export BASE_DIR=$(dirname $0)/..
export CLASSPATH=.:${BASE_DIR}/conf:${BASE_DIR}/server/*:${BASE_DIR}/client/*:${CLASSPATH}

JVM_CONFIG="-Xms2048m -Xmx2048m -Xmn1024m"
JVM_CONFIG="-Xms1024m -Xmx1024m -Xmn256m"

JAVA_OPTIONS=${JAVA_OPTIONS:-}

Expand Down
Loading

0 comments on commit c162445

Please sign in to comment.