小编Sup*_*ork的帖子

如何从字符串traceid创建opentelemetry范围

我知道我们要使用上下文传播来获取作为彼此子级创建的父级 Traceid 和 Span,但我的发布者正在使用标头(nats 不是 http)

我的消息代理使用标头,我将traceid和spanid设置为出站请求中的标头,发送消息,然后订阅者应该能够创建一个新的span,将父traceid设置为请求中的traceid。将它们联系起来

我的出站请求如下所示:

        msg := new(nats.Msg)
        msg.Data = []byte("new request being sent!")
        msg.Subject = subject
        getTraceID := requestSpan.SpanContext().TraceID().String()
        header := make(nats.Header)
        msg.Header = header
        header.Set("traceid", getTraceID)

        getSpanID := requestSpan.SpanContext().SpanID().String(
        header.Set("spanid", getSpanID)
        msg.Header = header
        
        reply, err := nc.RequestMsg(msg, time.Duration(5*time.Second))
Run Code Online (Sandbox Code Playgroud)

这有效,在订阅者端我可以获取跟踪和跨度 ID 的标头值

如何使用 Traceid 在订阅者端构建上下文/跨度?

我相信我可以在频道内做这样的事情:

    var traceID trace.TraceID
    traceID, err = trace.TraceIDFromHex(request.TraceID)
    if err != nil {
        fmt.Println("error: ", err)
        continue
    }
    var spanID trace.SpanID
    spanID, err = trace.SpanIDFromHex(request.SpanID)
    if err != nil { …
Run Code Online (Sandbox Code Playgroud)

concurrency trace go open-telemetry

6
推荐指数
1
解决办法
7331
查看次数

当primitive.A是bson []interface时,如何将mongo-go-driver作为bson数组的输出反序列化为[]interface{}

我有一个从使用新 mongo-go-driver 的 mongo 查询生成的 map[string]interface{}

我想处理地图中的某些值并替换属于聚合键的值中的 £ 字符

这是地图:

result2 = map[aggregate:[map[£match:map[Source:Cities]] map[£sort:map[Order:1]]] collection:aggregate_stats db:stats]
Run Code Online (Sandbox Code Playgroud)

循环遍历地图:

    for key, value := range result2 {
        fmt.Println("key from result2:", key, " || ", "value from result 2:", value)
        if key == "aggregate" {
            fmt.Println("FOUND AGGREGATE || ", "value:", value, " || type: ", reflect.TypeOf(value))
        }
        if valueMSI, ok := value.([]interface{}); ok {
            fmt.Println("Working", valueMSI)
            fmt.Println(reflect.TypeOf(valueMSI))
        }
    }
Run Code Online (Sandbox Code Playgroud)

现在,在检查聚合键的 if 语句中,第一个打印语句的输出给出的类型为:

primitive.A
Run Code Online (Sandbox Code Playgroud)

但它在打印时似乎是地图的 []interface{}?[见结果2]

考虑到这一点,为什么不评估第二个 if 语句?

这是否意味着primitive.A != 接口数组?

在文档https://godoc.org/go.mongodb.org/mongo-driver/bson/primitive …

go mongodb bson

4
推荐指数
1
解决办法
3083
查看次数

如何计算结构或JSON文档中的属性数?

我正在Go中制作一个PDF生成器,其中一个部分将是一个表格.要创建一个表,我需要说明列的宽度,这将通过获取页​​面宽度(减去边距)并除以表中的列数来完成

表中的列是在这样的结构中定义的:

type Person struct {
    Name    string `json:"Name"`
    Age     string `json:"Age"`
    Comment string `json:"Comment"`
}
Run Code Online (Sandbox Code Playgroud)

并且JSON被解组了

我不想将"3"作为列号硬编码到我的代码中,并想知道如何以编程方式从JSON或结构本身计算属性

我现在花了几天时间搜索,所有结果都集中在人们无法获得价值观,但我想要钥匙!

提前致谢

json go

1
推荐指数
1
解决办法
128
查看次数

标签 统计

go ×3

bson ×1

concurrency ×1

json ×1

mongodb ×1

open-telemetry ×1

trace ×1