Example
Minimal working example: connect to Fluss, create a table, write data, and read it back.
#include <iostream>
#include "fluss.hpp"
int main() {
// Connect
fluss::Configuration config;
config.bootstrap_servers = "127.0.0.1:9123";
fluss::Connection conn;
fluss::Connection::Create(config, conn);
fluss::Admin admin;
conn.GetAdmin(admin);
// Create a log table
fluss::TablePath table_path("fluss", "quickstart_cpp");
auto schema = fluss::Schema::NewBuilder()
.AddColumn("id", fluss::DataType::Int())
.AddColumn("name", fluss::DataType::String())
.Build();
auto descriptor = fluss::TableDescriptor::NewBuilder()
.SetSchema(schema)
.Build();
admin.CreateTable(table_path, descriptor, true);
// Write
fluss::Table table;
conn.GetTable(table_path, table);
fluss::AppendWriter writer;
table.NewAppend().CreateWriter(writer);
fluss::GenericRow row;
row.SetInt32(0, 1);
row.SetString(1, "hello");
writer.Append(row);
writer.Flush();
// Read
fluss::LogScanner scanner;
table.NewScan().CreateLogScanner(scanner);
auto info = table.GetTableInfo();
for (int b = 0; b < info.num_buckets; ++b) {
scanner.Subscribe(b, 0);
}
fluss::ScanRecords records;
scanner.Poll(5000, records);
for (const auto& rec : records) {
std::cout << "id=" << rec.row.GetInt32(0)
<< ", name=" << rec.row.GetString(1) << std::endl;
}
return 0;
}