如何在没有外部依赖的情况下通过 HTTP 摄取 ILP?

问题描述 投票:0回答:1

我正在使用 QuestDB,我可以使用客户端库通过 HTTP 通过 ILP 摄取数据,因此 QuestDB 中有一个可用的 HTTP 端点用于摄取。

我希望能够在没有依赖关系的情况下进行摄取,仅使用

curl
或任何其他 HTTP 客户端,但是当我尝试这样做时:

curl -X PUT http://localhost:9000 --data-binary $'trades,symbol=ETH-USD,side=sell price=2615.54,amount=0.00044 1646762637609765000\n'

我明白了

Method not supported

database time-series questdb
1个回答
0
投票

摄取的 url 和端口确实是(默认情况下)

http://localhost:9000
,但是摄取的端点是
/write
,所以我们必须像这样发送数据:

 curl -X POST http://localhost:9000/write --data-binary $'trades,symbol=ETH-USD,side=sell price=2615.54,amount=0.00044 1646762637609765000\n'

值得注意的是,在使用客户端库时,它们会处理诸如缓冲行(按行数或频率)或在发生任何暂时性故障时重新连接之类的事情,但是当使用独立的 HTTP 客户端时,我们不会得到其中任何一个。

至少,批量写入数据是个好主意,除非我们的摄取量非常低。否则,服务器将因小事务而承受大量开销。作为参考,官方库的默认值为每批 75K 行(或 1000 毫秒,以先到者为准)。

一次性发送多行就像用换行符分隔它们一样简单,如下所示:

 curl -X POST http://localhost:9000/write --data-binary $'trades,symbol=ETH-USD,side=sell price=2615.54,amount=0.00044 1646762637609765000\ntrades,symbol=BTC-USD,side=sell price=39269.98,amount=0.001 1646762637710419000'
``
© www.soinside.com 2019 - 2024. All rights reserved.