MQTT 조회
MQTT에서 데이터베이스 쿼리를 실행하려면 db/query
토픽으로 요청을 보내십시오. 서버는 db/reply
토픽 또는 요청의 reply
필드에 지정한 토픽으로 결과를 돌려줍니다.
쿼리 JSON
param | default | description |
---|---|---|
q | n/a | 실행할 SQL 쿼리 문자열 |
reply | db/reply | 쿼리 결과를 받을 토픽 |
format | json | 결과 형식: json, csv, box |
timeformat | ns | 시간 단위: s, ms, us, ns |
tz | UTC | 시간대: UTC, Local, 지역 지정 |
compress | no compression | 압축 방식: gzip |
rownum | false | 행 번호 포함 여부: true, false |
heading | true | 헤더 표시 여부: true, false |
precision | -1 | 부동소수점 자릿수: -1은 반올림 없음, 0은 정수 |
format=json
에서 사용 가능한 추가 매개변수
Since v8.0.12
다음 옵션은 format=json
일 때만 사용할 수 있습니다.
param | default | description |
---|---|---|
transpose | false | 행 대신 열 배열(cols )을 생성합니다. |
rowsFlatten | false | JSON 객체의 rows 필드 차원을 한 단계 줄입니다. |
rowsArray | false | 각 레코드를 객체 배열로 구성한 JSON을 생성합니다. |
기본 예시는 클라이언트가 db/reply/#
를 구독한 뒤 reply
필드를 db/reply/my_query
로 지정해 db/query
토픽으로 쿼리를 발행하고, 여러 메시지 중 자신의 응답만 구분하는 방법을 보여 줍니다.
{
"q": "select name,time,value from example limit 5",
"format": "csv",
"reply": "db/reply/my_query"
}

A demonstration shows how to query and receive responses over MQTT. (Using MQTTX.app)
클라이언트 예시
JSH 앱
Since v8.0.52이 예제에서는 응답 토픽을 구독하고 SQL 쿼리를 발행한 뒤 MQTT를 통해 결과를 받는 과정을 살펴봅니다.
응답 토픽 구독
먼저db/reply/my_query
처럼 결과를 받을 토픽을 구독합니다.SQL 쿼리 발행
db/query
토픽으로 SQL 쿼리(q
), 결과 형식(format
), 응답 토픽(reply
)을 포함한 메시지를 발행합니다.응답 수신 및 처리
서버가 쿼리를 처리하면 지정한 응답 토픽으로 결과를 전송합니다. 클라이언트는 메시지를 받아 결과를 출력합니다.
Below is the complete code example:
|
|
Node.js 클라이언트
npm install mqtt --save
|
|
$ node main.js
+----------+-------+
| TIME | VALUE |
+----------+-------+
| 05:46:19 | 69.4 |
| 05:46:22 | 26.4 |
| 05:46:25 | 42.8 |
+----------+-------+
Go 클라이언트
응답 구조 정의
type Result struct {
Success bool `json:"success"`
Reason string `json:"reason"`
Elapse string `json:"elapse"`
Data ResultData `json:"data"`
}
type ResultData struct {
Columns []string `json:"columns"`
Types []string `json:"types"`
Rows [][]any `json:"rows"`
}
db/reply
구독
|
|
Publish ‘db/query’
jsonStr := `{ "q": "select * from EXAMPLE order by time desc limit 5" }`
client.Publish("db/query", 1, false, []byte(jsonStr))
최근 업데이트