C++ SDK

Create real-time synchronization task

Create a task on the Dashboard or through the command line, and use Auto Push (autonomous push) as the data source type.

Import C++ SDK

The header files and libraries of the SDK need to be introduced into the project before using the SDK. Header files and libraries can be self-compiled from source, see SDK Compile&Use

Data report process

After import the SDK, you can report single or batch data by calling the send related interface of the SDK send_demo.cc 。The overall process includes the following three steps:

Initialize SDK

SDK supports a process to create one SDK instance, which is multi-thread safe. It also supports a process to create multiple SDK instances. Each SDK instance is independent of each other and each SDK instance is also thread-safe

  • Create SDK instance object
  1. InLongApi inlong_api
  • object instance initialization Configuration files are in json format, see [Config file description](#Appendix:Config File Description), initialize the SDK through the configuration file:
  1. // Initialize the SDK, the parameter is the path name of the configuration file; a return value of zero indicates successful initialization
  2. int32_t result = inlong_api.InitApi("/home/conf/config.json");

Call the send interface to report data

The SDK supports single (recommended) and batch sending, both of which are sent in asynchronous mode, and the data reporting interface is thread-safe. Before data reporting, the callback function can be set to perform callback processing when the data transmission fails. The callback function signature is as follows:

  1. int32_t callBackFunc(const char* inlong_group_id, const char* inlong_stream_id, const char* msg, int32_t msg_len, const int64_t report_time, const char* client_ip);
  • Single data reporting interface
  1. // Return value: zero means sending is successful, non-zero means failure, see SDKInvalidReuslt in tc_api.h for specific exception return value
  2. int32_t CallBackFunc(const char* inlong_group_id, const char* inlong_stream_id,
  3. const char* msg, int32_t msg_len,
  4. const int64_t report_time,
  5. const char* client_ip);

Close SDK

Call the close interface to close the SDK:

  1. // A return value of zero means that the shutdown is successful, and subsequent data reporting cannot be performed
  2. // max_waitms:The maximum number of milliseconds to wait before closing the SDK, waiting for the completion of the SDK internal data sending
  3. int32_t CloseApi(int32_t max_waitms);

Warning

  • It is recommended to use the SDK as a resident service for data reporting to avoid frequent initialization and shutdown of the same process midway, as repeated initialization and shutdown will bring more overhead;
  • SDK sending is asynchronous, and a return value of 0 indicates that the data has been successfully stored in the SDK’s internal buffer and is waiting for network sending. If inlong_group_id itself is misconfigured or the network is abnormal, it will also cause the data to fail to send, so it is recommended that the user set a callback when calling this interface, and execute the callback when the data fails to be sent after multiple retries.

Appendix:Config File Description

The configuration file format and important parameters are as follows:

  1. {
  2. "init-param": {
  3. "inlong_group_ids": "b_inlong_group_test_01, b_inlong_group_test_02",
  4. "manager_url": "http://127.0.0.1:8099/inlong/manager/openapi/dataproxy/getIpList",
  5. "manager_update_interval": 2,
  6. "manager_url_timeout": 5,
  7. "msg_type": 7,
  8. "max_proxy_num": 8,
  9. "per_groupid_thread_nums": 1,
  10. "dispatch_interval_zip": 8,
  11. "dispatch_interval_send": 10,
  12. "recv_buf_size": 10240000,
  13. "send_buf_size": 10240000,
  14. "enable_pack": true,
  15. "pack_size": 409600,
  16. "pack_timeout": 3000,
  17. "ext_pack_size": 409600,
  18. "enable_zip": true,
  19. "min_zip_len": 512,
  20. "tcp_detection_interval": 60000,
  21. "tcp_idle_time": 600000,
  22. "log_num": 10,
  23. "log_size": 104857600,
  24. "log_level": 3,
  25. "log_path": "./",
  26. "need_auth": false,
  27. "auth_id": "****",
  28. "auth_key": "****"
  29. }
  30. }
parametermeaningDefaults
inlong_group_idsinlong_group_id listb_inlong_group_test_01, b_inlong_group_test_02
manager_urlmanager addresshttp://127.0.0.1:8099/inlong/manager/openapi/dataproxy/getIpList
manager_update_intervalrequest manager intervals2 minute
manager_url_timeoutrequest manager timeoutTimestamp
msg_typedata type7
max_proxy_nummaximum proxy data for a single instance8
per_groupid_thread_numsnumber of single inlong_group_id threads1
dispatch_interval_zipcompress data intervals8 ms
dispatch_interval_senddata distribution intervals10 ms
recv_buf_sizereceive buffer size10240000 Byte
send_buf_sizesend buffer size10240000 Byte
enable_packwhether to allow packagingtrue
pack_sizepack size409600 Byte
pack_timeoutpack interval3000 ms
ext_pack_sizemaximum size of a single message409600 Byte
enable_zipwhether to allow compressiontrue
min_zip_lenminimum compression size512 Byte
tcp_detection_intervaltcp detection intervals60000 ms
tcp_idle_timetcp idle time600000 ms
log_numNumber of log files10
log_sizesingle log file size104857600 Byte
log_levellog level3 .trace(4)>debug(3)>info(2)>warn(1)>error(0)
log_pathlog directory./
need_authwhether to enable authenticationfalse
auth_idaccount
auth_keypassword