BitTraceProject

BitTrace Project API Documents


receiver

<p>[TOC]</p> <h3>HTTP 接口列表</h3> <ul> <li><code>Join</code></li> <li><code>Query</code></li> <li><code>Data</code></li> <li><code>Quit</code></li> </ul> <h3><code>Join</code> HTTP 接口</h3> <h5>简要描述</h5> <ul> <li>Exporter 注册接口</li> <li>先查询 meta,存在则返回元信息和进度信息,不存在则创建初始消息</li> <li>无论已经存在与否,都调用 resolver mgr 接口尝试启动 一个 resolver</li> <li>mgr 处会同样访问 meta,来对不同情况做出反应,始终保持 exporter 有且仅有一个 resolver 与之对应。</li> </ul> <h5>请求URL</h5> <ul> <li><code>http://localhost:8080/exporter/join</code></li> </ul> <h5>请求方式</h5> <ul> <li>GET</li> </ul> <h5>接口参数介绍</h5> <table> <thead> <tr> <th style="text-align: left;">参数名</th> <th style="text-align: left;">必选</th> <th style="text-align: left;">类型</th> <th>说明</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">exporter_tag</td> <td style="text-align: left;">是</td> <td style="text-align: left;">string</td> <td>exporter 唯一标识</td> </tr> </tbody> </table> <h5>返回示例</h5> <pre><code class="language-json"> { "ok": true, "msg": "resolver-exporter-1", "current_progress": { "current_n": 10, "current_file_id": 0, "current_day": "2023-02-02", }, }</code></pre> <h5>返回值介绍</h5> <table> <thead> <tr> <th style="text-align: left;">返回值名</th> <th style="text-align: left;">类型</th> <th>说明</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">OK</td> <td style="text-align: left;">bool</td> <td>是否注册成功</td> </tr> <tr> <td style="text-align: left;">Msg</td> <td style="text-align: left;">string</td> <td>返回注册成功对应的 resolver tag,或者注册失败的错误信息</td> </tr> <tr> <td style="text-align: left;">CurrentProgress</td> <td style="text-align: left;"><a href="https://github.com/BitTraceProject/BitTrace-Types/blob/main/pkg/protocol/receiver_http.go">protocol.ReceiverProgress</a></td> <td>如果存在历史进度,则返回,否则为该字段为空</td> </tr> </tbody> </table> <h5>注意事项</h5> <ul> <li>无</li> </ul> <h3><code>Query</code> HTTP 接口</h3> <h5>简要描述</h5> <ul> <li>与 <code>Join</code> 接口类似</li> <li>只查询和返回数据,不更新数据,不与 resolver 交互</li> </ul> <h5>请求URL</h5> <ul> <li><code>http://localhost:8080/exporter/query</code></li> </ul> <h5>请求方式</h5> <ul> <li>GET</li> </ul> <h5>接口参数介绍</h5> <table> <thead> <tr> <th style="text-align: left;">参数名</th> <th style="text-align: left;">必选</th> <th style="text-align: left;">类型</th> <th>说明</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">exporter_tag</td> <td style="text-align: left;">是</td> <td style="text-align: left;">string</td> <td>exporter 唯一标识</td> </tr> </tbody> </table> <h5>返回示例</h5> <pre><code class="language-json"> { "ok": true, "msg": "resolver-exporter-1", "current_progress": { "current_n": 10, "current_file_id": 0, "current_day": "2023-02-02", }, }</code></pre> <h5>返回值介绍</h5> <table> <thead> <tr> <th style="text-align: left;">返回值名</th> <th style="text-align: left;">类型</th> <th>说明</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">OK</td> <td style="text-align: left;">bool</td> <td>是否注册成功</td> </tr> <tr> <td style="text-align: left;">Msg</td> <td style="text-align: left;">string</td> <td>返回注册成功对应的 resolver tag,或者注册失败的错误信息</td> </tr> <tr> <td style="text-align: left;">CurrentProgress</td> <td style="text-align: left;"><a href="https://github.com/BitTraceProject/BitTrace-Types/blob/main/pkg/protocol/receiver_http.go">protocol.ReceiverProgress</a></td> <td>如果存在历史进度,则返回,否则为该字段为空</td> </tr> </tbody> </table> <h5>注意事项</h5> <ul> <li>无</li> </ul> <h3><code>Data</code> HTTP 接口</h3> <h5>简要描述</h5> <ul> <li>先解码和反序列化出数据</li> <li>然后根据 tag 查询 exporter 是否已注册</li> <li>已注册,则将数据包装成 <code>Message</code> 放入 MQ</li> <li>最后更新最新的进度信息</li> </ul> <h5>请求URL</h5> <ul> <li><code>http://localhost:8080/exporter/data</code></li> </ul> <h5>请求方式</h5> <ul> <li>POST</li> </ul> <h5>接口参数介绍</h5> <table> <thead> <tr> <th style="text-align: left;">参数名</th> <th style="text-align: left;">必选</th> <th style="text-align: left;">类型</th> <th>说明</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">exporter_tag</td> <td style="text-align: left;">是</td> <td style="text-align: left;">string</td> <td>exporter 唯一标识</td> </tr> <tr> <td style="text-align: left;">data_package</td> <td style="text-align: left;">是</td> <td style="text-align: left;"><a href="https://github.com/BitTraceProject/BitTrace-Types/blob/main/pkg/protocol/receiver_http.go">protocol.ReceiverDataPackage</a></td> <td>数据包裹</td> </tr> <tr> <td style="text-align: left;">current_progress</td> <td style="text-align: left;">是</td> <td style="text-align: left;"><a href="https://github.com/BitTraceProject/BitTrace-Types/blob/main/pkg/protocol/receiver_http.go">protocol.ReceiverProgress</a></td> <td>当前上报进度</td> </tr> </tbody> </table> <h5>返回示例</h5> <pre><code class="language-json"> { "ok": true, }</code></pre> <h5>返回值介绍</h5> <table> <thead> <tr> <th style="text-align: left;">返回值名</th> <th style="text-align: left;">类型</th> <th>说明</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">OK</td> <td style="text-align: left;">bool</td> <td>是否上报成功</td> </tr> </tbody> </table> <h5>注意事项</h5> <ul> <li>更新进度时,无论更新是否成功,都会返回 true。</li> <li>因为上述过程中,<code>Message</code> 已经被成功放入 MQ 了,这也说明,Meta 的进度信息一定不是完全正确的,可能会延后,导致 MQ 中消息重复。</li> <li>这在 resolver 中处理时需要注意。</li> </ul> <h3><code>Quit</code> HTTP 接口</h3> <h5>简要描述</h5> <ul> <li>Exporter 退出接口</li> <li>支持设置 <code>lazy_quit</code> 参数,使得 resolver 在处理完所有 mq 的消息后才异步地退出</li> </ul> <h5>请求URL</h5> <ul> <li><code>http://localhost:8080/exporter/quit</code></li> </ul> <h5>请求方式</h5> <ul> <li>GET</li> </ul> <h5>接口参数介绍</h5> <table> <thead> <tr> <th style="text-align: left;">参数名</th> <th style="text-align: left;">必选</th> <th style="text-align: left;">类型</th> <th>说明</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">exporter_tag</td> <td style="text-align: left;">是</td> <td style="text-align: left;">string</td> <td>exporter 唯一标识</td> </tr> <tr> <td style="text-align: left;">lazy_quit</td> <td style="text-align: left;">否</td> <td style="text-align: left;">bool</td> <td>resolver 是否异步退出,默认 false</td> </tr> </tbody> </table> <h5>返回示例</h5> <pre><code class="language-json"> { "ok": true, "msg": "resolver-exporter-1", }</code></pre> <h5>返回值介绍</h5> <table> <thead> <tr> <th style="text-align: left;">返回值名</th> <th style="text-align: left;">类型</th> <th>说明</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">OK</td> <td style="text-align: left;">bool</td> <td>是否退出成功</td> </tr> <tr> <td style="text-align: left;">Msg</td> <td style="text-align: left;">string</td> <td>返回对应的 resolver tag,或者退出失败的错误信息</td> </tr> </tbody> </table> <h5>注意事项</h5> <ul> <li><code>lazy_quit</code> 参数会传递给 resolver mgr 来真正地控制。</li> </ul>

页面列表

ITEM_HTML