openmeter / app /common /streaming.go
Leon4gr45's picture
Upload folder using huggingface_hub (part 4)
1f10f31 verified
Raw
History Blame Contribute Delete
2.16 kB
package common
import (
"context"
"fmt"
"log/slog"
"github.com/ClickHouse/clickhouse-go/v2"
"github.com/google/wire"
"github.com/openmeterio/openmeter/app/config"
"github.com/openmeterio/openmeter/openmeter/namespace"
"github.com/openmeterio/openmeter/openmeter/progressmanager"
"github.com/openmeterio/openmeter/openmeter/streaming"
clickhouseconnector "github.com/openmeterio/openmeter/openmeter/streaming/clickhouse"
streamingretry "github.com/openmeterio/openmeter/openmeter/streaming/retry"
)
var Streaming = wire.NewSet(
NewStreamingConnector,
)
func NewStreamingConnector(
ctx context.Context,
conf config.AggregationConfiguration,
clickHouse clickhouse.Conn,
logger *slog.Logger,
progressmanager progressmanager.Service,
namespaceManager *namespace.Manager,
) (streaming.Connector, error) {
var connector streaming.Connector
var err error
connector, err = clickhouseconnector.New(ctx, clickhouseconnector.Config{
ClickHouse: clickHouse,
Database: conf.ClickHouse.Database,
EventsTableName: conf.EventsTableName,
Logger: logger,
AsyncInsert: conf.AsyncInsert,
AsyncInsertWait: conf.AsyncInsertWait,
InsertQuerySettings: conf.InsertQuerySettings,
MeterQuerySettings: conf.MeterQuerySettings,
EnablePrewhere: conf.EnablePrewhere,
EnableDecimalPrecision: conf.EnableDecimalPrecision,
ProgressManager: progressmanager,
})
if err != nil {
return nil, fmt.Errorf("init clickhouse connector: %w", err)
}
if conf.ClickHouse.Retry.Enabled {
connector, err = streamingretry.New(streamingretry.Config{
DownstreamConnector: connector,
Logger: logger,
RetryWaitDuration: conf.ClickHouse.Retry.RetryWaitDuration,
MaxTries: conf.ClickHouse.Retry.MaxTries,
MaxDelay: conf.ClickHouse.Retry.MaxDelay,
})
if err != nil {
return nil, fmt.Errorf("init retry connector: %w", err)
}
}
err = namespaceManager.RegisterHandler(connector)
if err != nil {
return nil, fmt.Errorf("failed to register streaming namespace handler: %w", err)
}
return connector, nil
}