Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
慢慢CG
TDengine
提交
60416be4
T
TDengine
项目概览
慢慢CG
/
TDengine
与 Fork 源项目一致
Fork自
taosdata / TDengine
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
60416be4
编写于
9月 03, 2020
作者:
S
Shengliang Guan
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
TD-1310
上级
b87ad419
变更
8
隐藏空白更改
内联
并排
Showing
8 changed file
with
122 addition
and
158 deletion
+122
-158
packaging/cfg/taos.cfg
packaging/cfg/taos.cfg
+7
-4
src/common/inc/tglobal.h
src/common/inc/tglobal.h
+6
-2
src/common/src/tglobal.c
src/common/src/tglobal.c
+23
-9
src/inc/taosdef.h
src/inc/taosdef.h
+7
-0
src/plugins/mqtt/inc/mqttInit.h
src/plugins/mqtt/inc/mqttInit.h
+0
-6
src/plugins/mqtt/src/mqttSystem.c
src/plugins/mqtt/src/mqttSystem.c
+68
-136
src/wal/CMakeLists.txt
src/wal/CMakeLists.txt
+0
-1
tests/script/general/connection/mqtt.sim
tests/script/general/connection/mqtt.sim
+11
-0
未找到文件。
packaging/cfg/taos.cfg
浏览文件 @
60416be4
...
...
@@ -122,11 +122,14 @@
# number of replications, for cluster only
# replica 1
# mqtt
uri
# mqtt
BrokerAddress mqtt://username:password@hostname:1883/taos/
# mqtt
hostname
# mqtt
HostName test.mosquitto.org
# mqtt client name
# mqttBrokerClientId taos_mqtt
# mqtt port
# mqttPort 1883
# mqtt topic
# mqttTopic /weather/loop
# the compressed rpc message, option:
# -1 (no compression)
...
...
src/common/inc/tglobal.h
浏览文件 @
60416be4
...
...
@@ -104,8 +104,12 @@ extern int32_t tsTelegrafUseFieldNum;
// mqtt
extern
int32_t
tsEnableMqttModule
;
extern
char
tsMqttBrokerAddress
[];
extern
char
tsMqttBrokerClientId
[];
extern
char
tsMqttHostName
[];
extern
char
tsMqttPort
[];
extern
char
tsMqttUser
[];
extern
char
tsMqttPass
[];
extern
char
tsMqttClientId
[];
extern
char
tsMqttTopic
[];
// monitor
extern
int32_t
tsEnableMonitorModule
;
...
...
src/common/src/tglobal.c
浏览文件 @
60416be4
...
...
@@ -137,8 +137,12 @@ int32_t tsTelegrafUseFieldNum = 0;
// mqtt
int32_t
tsEnableMqttModule
=
0
;
// not finished yet, not started it by default
char
tsMqttBrokerAddress
[
128
]
=
{
0
};
char
tsMqttBrokerClientId
[
128
]
=
{
0
};
char
tsMqttHostName
[
TSDB_MQTT_HOSTNAME_LEN
]
=
"test.mosquitto.org"
;
char
tsMqttPort
[
TSDB_MQTT_PORT_LEN
]
=
"1883"
;
char
tsMqttUser
[
TSDB_MQTT_USER_LEN
]
=
{
0
};
char
tsMqttPass
[
TSDB_MQTT_PASS_LEN
]
=
{
0
};
char
tsMqttClientId
[
TSDB_MQTT_CLIENT_ID_LEN
]
=
"TDengineMqttSubscriber"
;
char
tsMqttTopic
[
TSDB_MQTT_TOPIC_LEN
]
=
"/weather/loop"
;
// monitor
int32_t
tsEnableMonitorModule
=
1
;
...
...
@@ -767,26 +771,36 @@ static void doInitGlobalConfig(void) {
cfg
.
unitType
=
TAOS_CFG_UTYPE_NONE
;
taosInitConfigOption
(
cfg
);
cfg
.
option
=
"mqtt
BrokerAddress
"
;
cfg
.
ptr
=
tsMqtt
BrokerAddress
;
cfg
.
option
=
"mqtt
HostName
"
;
cfg
.
ptr
=
tsMqtt
HostName
;
cfg
.
valType
=
TAOS_CFG_VTYPE_STRING
;
cfg
.
cfgType
=
TSDB_CFG_CTYPE_B_CONFIG
|
TSDB_CFG_CTYPE_B_CLIENT
|
TSDB_CFG_CTYPE_B_NOT_PRINT
;
cfg
.
minValue
=
0
;
cfg
.
maxValue
=
0
;
cfg
.
ptrLength
=
126
;
cfg
.
ptrLength
=
TSDB_MQTT_HOSTNAME_LEN
;
cfg
.
unitType
=
TAOS_CFG_UTYPE_NONE
;
taosInitConfigOption
(
cfg
);
cfg
.
option
=
"mqtt
BrokerClientId
"
;
cfg
.
ptr
=
tsMqtt
BrokerClientId
;
cfg
.
option
=
"mqtt
Port
"
;
cfg
.
ptr
=
tsMqtt
Port
;
cfg
.
valType
=
TAOS_CFG_VTYPE_STRING
;
cfg
.
cfgType
=
TSDB_CFG_CTYPE_B_CONFIG
|
TSDB_CFG_CTYPE_B_CLIENT
|
TSDB_CFG_CTYPE_B_NOT_PRINT
;
cfg
.
minValue
=
0
;
cfg
.
maxValue
=
0
;
cfg
.
ptrLength
=
126
;
cfg
.
ptrLength
=
TSDB_MQTT_PORT_LEN
;
cfg
.
unitType
=
TAOS_CFG_UTYPE_NONE
;
taosInitConfigOption
(
cfg
);
cfg
.
option
=
"mqttTopic"
;
cfg
.
ptr
=
tsMqttTopic
;
cfg
.
valType
=
TAOS_CFG_VTYPE_STRING
;
cfg
.
cfgType
=
TSDB_CFG_CTYPE_B_CONFIG
|
TSDB_CFG_CTYPE_B_CLIENT
|
TSDB_CFG_CTYPE_B_NOT_PRINT
;
cfg
.
minValue
=
0
;
cfg
.
maxValue
=
0
;
cfg
.
ptrLength
=
TSDB_MQTT_TOPIC_LEN
;
cfg
.
unitType
=
TAOS_CFG_UTYPE_NONE
;
taosInitConfigOption
(
cfg
);
cfg
.
option
=
"compressMsgSize"
;
cfg
.
ptr
=
&
tsCompressMsgSize
;
cfg
.
valType
=
TAOS_CFG_VTYPE_INT32
;
...
...
src/inc/taosdef.h
浏览文件 @
60416be4
...
...
@@ -272,6 +272,13 @@ void tsDataSwap(void *pLeft, void *pRight, int32_t type, int32_t size);
#define TSDB_SHOW_SQL_LEN 64
#define TSDB_SLOW_QUERY_SQL_LEN 512
#define TSDB_MQTT_HOSTNAME_LEN 64
#define TSDB_MQTT_PORT_LEN 8
#define TSDB_MQTT_USER_LEN 24
#define TSDB_MQTT_PASS_LEN 24
#define TSDB_MQTT_TOPIC_LEN 64
#define TSDB_MQTT_CLIENT_ID_LEN 32
#define TSDB_METER_STATE_OFFLINE 0
#define TSDB_METER_STATE_ONLLINE 1
...
...
src/plugins/mqtt/inc/mqttInit.h
浏览文件 @
60416be4
...
...
@@ -37,12 +37,6 @@ extern "C" {
* \ref mqttReconnectClient is called, this instance will be passed.
*/
struct
reconnect_state_t
{
char
*
hostname
;
char
*
port
;
char
*
topic
;
char
*
client_id
;
char
*
user_name
;
char
*
password
;
uint8_t
*
sendbuf
;
size_t
sendbufsz
;
uint8_t
*
recvbuf
;
...
...
src/plugins/mqtt/src/mqttSystem.c
浏览文件 @
60416be4
...
...
@@ -30,123 +30,58 @@
#include "tsocket.h"
#include "ttimer.h"
#include "mqttSystem.h"
struct
mqtt_client
mqttClient
=
{
0
};
pthread_t
clientDaemonThread
=
{
0
};
void
*
mqttConnect
=
NULL
;
struct
reconnect_state_t
recntStatus
=
{
0
};
char
*
topicPath
=
NULL
;
int
mttIsRuning
=
1
;
int32_t
mqttInitSystem
()
{
int
rc
=
0
;
#if 0
uint8_t sendbuf[2048];
uint8_t recvbuf[1024];
recntStatus.sendbuf = sendbuf;
recntStatus.sendbufsz = sizeof(sendbuf);
recntStatus.recvbuf = recvbuf;
recntStatus.recvbufsz = sizeof(recvbuf);
char* url = tsMqttBrokerAddress;
recntStatus.user_name = strstr(url, "@") != NULL ? strbetween(url, "//", ":") : NULL;
char * passStr = strstr(url, recntStatus.user_name);
if (passStr != NULL) {
recntStatus.password = strstr(url, "@") != NULL ? strbetween(passStr, ":", "@") : NULL;
}
#define MQTT_SEND_BUF_SIZE 102400
#define MQTT_RECV_BUF_SIZE 102400
if (strlen(url) == 0) {
mqttDebug("mqtt module not init, url is null");
return rc;
}
struct
mqtt_client
tsMqttClient
=
{
0
};
struct
reconnect_state_t
tsMqttStatus
=
{
0
};
static
pthread_t
tsMqttClientDaemonThread
=
{
0
};
static
void
*
tsMqttConnect
=
NULL
;
static
bool
mqttIsRuning
=
false
;
if (strstr(url, "@") != NULL) {
recntStatus.hostname = strbetween(url, "@", ":");
} else if (strstr(strstr(url, "://") + 3, ":") != NULL) {
recntStatus.hostname = strbetween(url, "//", ":");
void
mqttPublishCallback
(
void
**
unused
,
struct
mqtt_response_publish
*
published
);
void
mqttCleanupRes
(
int
status
,
int
sockfd
,
pthread_t
*
client_daemon
);
void
*
mqttClientRefresher
(
void
*
client
);
} else {
recntStatus.hostname = strbetween(url, "//", "/");
}
int32_t
mqttInitSystem
()
{
return
0
;
}
char* _begin_hostname = strstr(url, recntStatus.hostname);
if (_begin_hostname != NULL && strstr(_begin_hostname, ":") != NULL) {
recntStatus.port = strbetween(_begin_hostname, ":", "/")
;
} else {
recntStatus.port = strbetween("'1883'", "'", "'"
);
}
int32_t
mqttStartSystem
()
{
tsMqttStatus
.
sendbufsz
=
MQTT_SEND_BUF_SIZE
;
tsMqttStatus
.
recvbufsz
=
MQTT_RECV_BUF_SIZE
;
tsMqttStatus
.
sendbuf
=
malloc
(
MQTT_SEND_BUF_SIZE
);
tsMqttStatus
.
recvbuf
=
malloc
(
MQTT_RECV_BUF_SIZE
);
mqttIsRuning
=
true
;
char* portStr = recntStatus.hostname;
if (_begin_hostname != NULL) {
char* colonStr = strstr(_begin_hostname, ":");
if (colonStr != NULL) {
portStr = recntStatus.port;
}
mqtt_init_reconnect
(
&
tsMqttClient
,
mqttReconnectClient
,
&
tsMqttStatus
,
mqttPublishCallback
);
if
(
pthread_create
(
&
tsMqttClientDaemonThread
,
NULL
,
mqttClientRefresher
,
&
tsMqttClient
))
{
mqttError
(
"mqtt client failed to start daemon."
);
mqttCleanupRes
(
EXIT_FAILURE
,
-
1
,
NULL
);
return
-
1
;
}
char* topicStr = strstr(url, portStr);
if (topicStr != NULL) {
topicPath = strbetween(topicStr, "/", "/");
char* _topic = "+/+/+/";
int _tpsize = strlen(topicPath) + strlen(_topic) + 1;
recntStatus.topic = calloc(1, _tpsize);
sprintf(recntStatus.topic, "/%s/%s", topicPath, _topic);
recntStatus.client_id = strlen(tsMqttBrokerClientId) < 3 ? tsMqttBrokerClientId : "taos_mqtt";
mqttConnect = NULL;
} else {
topicPath = NULL;
}
#endif
return
rc
;
mqttInfo
(
"mqtt client listening for %s messages"
,
tsMqttTopic
);
return
0
;
}
int32_t
mqttStartSystem
()
{
int
rc
=
0
;
#if 0
if (recntStatus.user_name != NULL && recntStatus.password != NULL) {
mqttInfo("connecting to mqtt://%s:%s@%s:%s/%s/", recntStatus.user_name, recntStatus.password,
recntStatus.hostname, recntStatus.port, topicPath);
} else if (recntStatus.user_name != NULL && recntStatus.password == NULL) {
mqttInfo("connecting to mqtt://%s@%s:%s/%s/", recntStatus.user_name, recntStatus.hostname, recntStatus.port,
topicPath);
}
void
mqttStopSystem
()
{
if
(
mqttIsRuning
)
{
mqttIsRuning
=
false
;
tsMqttClient
.
error
=
MQTT_ERROR_SOCKET_ERROR
;
mqtt_init_reconnect(&mqttClient, mqttReconnectClient, &recntStatus, mqtt_PublishCallback);
if (pthread_create(&clientDaemonThread, NULL, mqttClientRefresher, &mqttClient)) {
mqttError("Failed to start client daemon.");
mqttCleanup(EXIT_FAILURE, -1, NULL);
rc = -1;
} else {
mqttInfo("listening for '%s' messages.", recntStatus.topic);
}
#endif
return
rc
;
}
taosMsleep
(
300
);
mqttCleanupRes
(
EXIT_SUCCESS
,
tsMqttClient
.
socketfd
,
&
tsMqttClientDaemonThread
);
void
mqttStopSystem
()
{
#if 0
mqttClient.error = MQTT_ERROR_SOCKET_ERROR;
mttIsRuning = 0;
usleep(300000U);
mqttCleanup(EXIT_SUCCESS, mqttClient.socketfd, &clientDaemonThread);
mqttInfo("mqtt is stoped");
#endif
mqttInfo
(
"mqtt is stopped"
);
}
}
void
mqttCleanUpSystem
()
{
#if 0
mqttInfo("starting to cleanup mqtt");
free(recntStatus.user_name);
free(recntStatus.password);
free(recntStatus.hostname);
free(recntStatus.port);
free(recntStatus.topic);
free(topicPath);
mqttStopSystem
();
mqttInfo
(
"mqtt is cleaned up"
);
#endif
}
void
mqtt
_
PublishCallback
(
void
**
unused
,
struct
mqtt_response_publish
*
published
)
{
void
mqttPublishCallback
(
void
**
unused
,
struct
mqtt_response_publish
*
published
)
{
/* note that published->topic_name is NOT null-terminated (here we'll change it to a c-string) */
char
*
topic_name
=
(
char
*
)
malloc
(
published
->
topic_name_size
+
1
);
memcpy
(
topic_name
,
published
->
topic_name
,
published
->
topic_name_size
);
...
...
@@ -155,28 +90,29 @@ void mqtt_PublishCallback(void** unused, struct mqtt_response_publish* published
char
_token
[
128
]
=
{
0
};
char
_dbname
[
128
]
=
{
0
};
char
_tablename
[
128
]
=
{
0
};
if
(
m
qttConnect
==
NULL
)
{
if
(
tsM
qttConnect
==
NULL
)
{
mqttInfo
(
"connect database"
);
taos_connect_a
(
NULL
,
"_root"
,
tsInternalPass
,
""
,
0
,
mqttInitConnCb
,
&
mqttClient
,
&
m
qttConnect
);
taos_connect_a
(
NULL
,
"_root"
,
tsInternalPass
,
""
,
0
,
mqttInitConnCb
,
&
tsMqttClient
,
&
tsM
qttConnect
);
}
if
(
topic_name
[
1
]
==
'/'
&&
strncmp
((
char
*
)
&
topic_name
[
1
],
topicPath
,
strlen
(
topicPath
))
==
0
)
{
if
(
topic_name
[
1
]
==
'/'
&&
strncmp
((
char
*
)
&
topic_name
[
1
],
tsMqttTopic
,
strlen
(
tsMqttTopic
))
==
0
)
{
char
*
p_p_cmd_part
[
5
]
=
{
0
};
char
copystr
[
1024
]
=
{
0
};
strncpy
(
copystr
,
topic_name
,
MIN
(
1024
,
published
->
topic_name_size
));
char
part_index
=
split
(
copystr
,
"/"
,
p_p_cmd_part
,
10
);
if
(
part_index
<
4
)
{
mqttError
(
"The topic %s is't format '/path/token/dbname/table name/'. for expmle: '/taos/token/db/t'"
,
topic_name
);
mqttError
(
"The topic %s is't format '/path/token/dbname/table name/'. for expmle: '/taos/token/db/t'"
,
topic_name
);
}
else
{
strncpy
(
_token
,
p_p_cmd_part
[
1
],
127
);
strncpy
(
_dbname
,
p_p_cmd_part
[
2
],
127
);
strncpy
(
_tablename
,
p_p_cmd_part
[
3
],
127
);
mqttInfo
(
"part count=%d,access token:%s,database name:%s, table name:%s"
,
part_index
,
_token
,
_dbname
,
_tablename
);
_tablename
);
if
(
m
qttConnect
!=
NULL
)
{
if
(
tsM
qttConnect
!=
NULL
)
{
char
*
_sql
=
converJsonToSql
((
char
*
)
published
->
application_message
,
_dbname
,
_tablename
);
mqttInfo
(
"query:%s"
,
_sql
);
taos_query_a
(
mqttConnect
,
_sql
,
mqttQueryInsertCallback
,
&
m
qttClient
);
taos_query_a
(
tsMqttConnect
,
_sql
,
mqttQueryInsertCallback
,
&
tsM
qttClient
);
mqttInfo
(
"free sql:%s"
,
_sql
);
free
(
_sql
);
}
...
...
@@ -186,27 +122,31 @@ void mqtt_PublishCallback(void** unused, struct mqtt_response_publish* published
}
void
*
mqttClientRefresher
(
void
*
client
)
{
while
(
mttIsRuning
)
{
while
(
m
q
ttIsRuning
)
{
mqtt_sync
((
struct
mqtt_client
*
)
client
);
taosMsleep
(
100
);
}
mqttDebug
(
"quit refresher"
);
mqttDebug
(
"mqtt client quit refresher"
);
return
NULL
;
}
void
mqttCleanup
(
int
status
,
int
sockfd
,
pthread_t
*
client_daemon
)
{
#if 0
void
mqttCleanupRes
(
int
status
,
int
sockfd
,
pthread_t
*
client_daemon
)
{
mqttInfo
(
"clean up mqtt module"
);
if (sockfd != -1) close(sockfd);
if (client_daemon != NULL) pthread_cancel(*client_daemon);
#endif
if
(
sockfd
!=
-
1
)
{
close
(
sockfd
);
}
if
(
client_daemon
!=
NULL
)
{
pthread_cancel
(
*
client_daemon
);
}
}
void
mqttInitConnCb
(
void
*
param
,
TAOS_RES
*
result
,
int32_t
code
)
{
if
(
code
<
0
)
{
mqttError
(
"mqtt:%d, connect to database failed, reason:%s"
,
code
,
tstrerror
(
code
));
taos_close
(
m
qttConnect
);
m
qttConnect
=
NULL
;
taos_close
(
tsM
qttConnect
);
tsM
qttConnect
=
NULL
;
return
;
}
mqttDebug
(
"mqtt:%d, connect to database success, reason:%s"
,
code
,
tstrerror
(
code
));
...
...
@@ -222,36 +162,28 @@ void mqttQueryInsertCallback(void* param, TAOS_RES* result, int32_t code) {
}
}
void
mqttReconnectClient
(
struct
mqtt_client
*
client
,
void
**
reconnect_state_vptr
)
{
mqttInfo
(
"reconnect client"
);
struct
reconnect_state_t
*
reconnect_state
=
*
((
struct
reconnect_state_t
**
)
reconnect_state_vptr
);
void
mqttReconnectClient
(
struct
mqtt_client
*
client
,
void
**
unused
)
{
mqttInfo
(
"mqtt client tries to connect to the server"
);
/* Close the clients socket if this isn't the initial reconnect call */
if
(
client
->
error
!=
MQTT_ERROR_INITIAL_RECONNECT
)
{
close
(
client
->
socketfd
);
}
/* Perform error handling here. */
if
(
client
->
error
!=
MQTT_ERROR_INITIAL_RECONNECT
)
{
mqttError
(
"mqtt
ReconnectClient: called while client was in error state
\"
%s
\"
"
,
mqtt_error_str
(
client
->
error
));
mqttError
(
"mqtt
client was in error state %s
"
,
mqtt_error_str
(
client
->
error
));
}
/* Open a new socket. */
int
sockfd
=
open_nb_socket
(
reconnect_state
->
hostname
,
reconnect_state
->
port
);
if
(
sockfd
==
-
1
)
{
mqttError
(
"failed to open socket: "
);
mqttCleanup
(
EXIT_FAILURE
,
sockfd
,
NULL
);
int
sockfd
=
open_nb_socket
(
"test.mosquitto.org"
,
"1883"
);
if
(
sockfd
<
0
)
{
mqttError
(
"mqtt client failed to open socket %s:%s"
,
tsMqttHostName
,
tsMqttPort
);
mqttCleanupRes
(
EXIT_FAILURE
,
sockfd
,
NULL
);
}
/* Reinitialize the client. */
mqtt_reinit
(
client
,
sockfd
,
reconnect_state
->
sendbuf
,
reconnect_state
->
sendbufsz
,
reconnect_state
->
recvbuf
,
reconnect_state
->
recvbufsz
);
/* Ensure we have a clean session */
uint8_t
connect_flags
=
MQTT_CONNECT_CLEAN_SESSION
;
/* Send connection request to the broker. */
mqtt_connect
(
client
,
reconnect_state
->
client_id
,
NULL
,
NULL
,
0
,
reconnect_state
->
user_name
,
reconnect_state
->
password
,
connect_flags
,
400
);
// mqtt_reinit(client, sockfd, tsMqttStatus.sendbuf, tsMqttStatus.sendbufsz, tsMqttStatus.recvbuf, tsMqttStatus.recvbufsz);
// mqtt_connect(client, tsMqttClientId, NULL, NULL, 0, tsMqttUser, tsMqttPass, MQTT_CONNECT_CLEAN_SESSION, 400);
// mqtt_subscribe(client, tsMqttTopic, 0);
/* Subscribe to the topic. */
mqtt_subscribe
(
client
,
reconnect_state
->
topic
,
0
);
mqtt_reinit
(
client
,
sockfd
,
tsMqttStatus
.
sendbuf
,
tsMqttStatus
.
sendbufsz
,
tsMqttStatus
.
recvbuf
,
tsMqttStatus
.
recvbufsz
);
mqtt_connect
(
client
,
tsMqttClientId
,
NULL
,
NULL
,
0
,
NULL
,
NULL
,
MQTT_CONNECT_CLEAN_SESSION
,
400
);
mqtt_subscribe
(
client
,
"datetime"
,
0
);
}
\ No newline at end of file
src/wal/CMakeLists.txt
浏览文件 @
60416be4
...
...
@@ -7,6 +7,5 @@ AUX_SOURCE_DIRECTORY(${CMAKE_CURRENT_SOURCE_DIR}/src SRC)
IF
(
TD_LINUX
)
ADD_LIBRARY
(
twal
${
SRC
}
)
TARGET_LINK_LIBRARIES
(
twal tutil common
)
ADD_SUBDIRECTORY
(
test
)
ENDIF
()
tests/script/general/connection/mqtt.sim
0 → 100644
浏览文件 @
60416be4
system sh/stop_dnodes.sh
system sh/deploy.sh -n dnode1 -i 1
system sh/cfg.sh -n dnode1 -c walLevel -v 2
system sh/cfg.sh -n dnode1 -c numOfMnodes -v 1
system sh/cfg.sh -n dnode1 -c mnodeEqualVnodeNum -v 4
system sh/cfg.sh -n dnode1 -c maxTablesPerVnode -v 100000
system sh/cfg.sh -n dnode1 -c http -v 1
system sh/cfg.sh -n dnode1 -c http -v 1
system sh/cfg.sh -n dnode1 -c mqttBrokerAddress -v mqtt://test.mosquitto.org:1883/#
system sh/cfg.sh -n dnode1 -c mqttBrokerClientId -v taosmqtt
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录