38 lines
933 B
Go
38 lines
933 B
Go
|
package main
|
||
|
|
||
|
import (
|
||
|
"context"
|
||
|
"fmt"
|
||
|
|
||
|
influxdb2 "github.com/influxdata/influxdb-client-go/v2"
|
||
|
"github.com/influxdata/influxdb-client-go/v2/api/write"
|
||
|
amqp "github.com/rabbitmq/amqp091-go"
|
||
|
)
|
||
|
|
||
|
func RunPipe(
|
||
|
channel <-chan amqp.Delivery,
|
||
|
url string, token string,
|
||
|
org string, bucket string,
|
||
|
conversion func(amqp.Delivery) ([]*write.Point, error),
|
||
|
) {
|
||
|
// Create a new client using an InfluxDB server base URL and an authentication token
|
||
|
client := influxdb2.NewClient(
|
||
|
url, token,
|
||
|
)
|
||
|
// Get blocking write client
|
||
|
writeAPI := client.WriteAPIBlocking(org, bucket)
|
||
|
// Create point using fluent style
|
||
|
for msg := range channel {
|
||
|
points, _ := conversion(msg)
|
||
|
// Write data
|
||
|
err := writeAPI.WritePoint(context.Background(), points...)
|
||
|
if err != nil {
|
||
|
fmt.Printf("Write error: %s", err.Error())
|
||
|
// reset writeAPI
|
||
|
writeAPI.Flush(context.Background())
|
||
|
writeAPI = client.WriteAPIBlocking(org, bucket)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
}
|