90 lines
2.6 KiB
Go
90 lines
2.6 KiB
Go
package mq
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"go.opentelemetry.io/otel"
|
|
// nolint
|
|
"go.opentelemetry.io/otel/exporters/jaeger"
|
|
"go.opentelemetry.io/otel/sdk/resource"
|
|
"go.opentelemetry.io/otel/sdk/trace"
|
|
semconv "go.opentelemetry.io/otel/semconv/v1.21.0"
|
|
"os"
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
func TestProducer_SendSync(t *testing.T) {
|
|
//initTracer("http://192.168.6.194:14268/api/traces", 1, "go_unit_test_for_util_producer")
|
|
|
|
//http://192.168.6.107:9876/
|
|
//p, err := NewProducer("192.168.6.107:9876")
|
|
p, err := NewProducer("http://rmq-cn-j4g3sem5i05.cn-chengdu.rmq.aliyuncs.com:8080", WithProducerCredentials("1i3vEsceLzcYD26p", "192602NYDuAHQ76a", ""))
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
err = p.Start()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
for i := 0; i < 10; i++ {
|
|
err = p.SendSync(
|
|
context.Background(),
|
|
"test_transfer_rs",
|
|
[]byte("hello world"+time.Now().Format(time.DateTime)+fmt.Sprintf("%d", i)),
|
|
WithSendKeysOption([]string{"ttt"}),
|
|
WithSendTagOption("TagA"),
|
|
WithSendWithPropertyOption("pk", "pv"),
|
|
)
|
|
if err != nil {
|
|
fmt.Println("同步发送失败:", err)
|
|
} else {
|
|
fmt.Println("同步发送成功")
|
|
}
|
|
//err = p.SendAsync(
|
|
// context.Background(),
|
|
// "test_transfer_rs",
|
|
// []byte("hello world"+time.Now().Format(time.DateTime)+fmt.Sprintf("%d", i)),
|
|
// func(err error) {
|
|
// if err != nil {
|
|
// //出错了
|
|
// fmt.Println("异步回调错误", err)
|
|
// } else {
|
|
// fmt.Println("异步回调成功")
|
|
// }
|
|
// },
|
|
// WithSendKeysOption([]string{"ttt"}),
|
|
// WithSendTagOption("TagA"),
|
|
// WithSendWithPropertyOption("pk", "pv"),
|
|
//)
|
|
//if err != nil {
|
|
// fmt.Println("异步发起失败", err)
|
|
//}
|
|
}
|
|
_ = p.Shutdown()
|
|
time.Sleep(1 * time.Second) // 防止测试时span未上报完成
|
|
}
|
|
|
|
func initTracer(url string, sampler float64, name string) {
|
|
exporter, err := jaeger.New(jaeger.WithCollectorEndpoint(jaeger.WithEndpoint(url)))
|
|
if err != nil {
|
|
panic(fmt.Errorf("failed to initialize jaeger exporter:%s", url))
|
|
}
|
|
hostName, _ := os.Hostname()
|
|
tp := trace.NewTracerProvider(
|
|
// 将基于父span的采样率设置为100%
|
|
trace.WithSampler(trace.ParentBased(trace.TraceIDRatioBased(sampler))),
|
|
// 单元测试使用同步发送
|
|
//trace.WithBatcher(exporter),
|
|
trace.WithSyncer(exporter),
|
|
// 在资源中记录有关此应用程序的信息
|
|
trace.WithResource(resource.NewSchemaless(
|
|
semconv.ServiceNameKey.String(name),
|
|
semconv.ServiceVersionKey.String("v1.0.0"),
|
|
semconv.ServiceInstanceIDKey.String(hostName),
|
|
semconv.GCPGceInstanceHostnameKey.String(hostName),
|
|
)),
|
|
)
|
|
otel.SetTracerProvider(tp)
|
|
}
|