我想将 kamon 配置为检查每个请求并将标头值存储在上下文中,以便从应用程序中的任何位置访问此上下文。我从 kamon docs 中举了一个例子: https ://kamon.io/docs/latest/core/context/
我的 webapp 是用 lagom 和一些自定义播放路线构建的。这是 application.conf 中 kamon 上下文的配置
kamon.context.codecs {
string-keys {
request-id = "X-Request-ID"
}
}
这是我的路线的一个例子
case GET(p"/helloWorld") =>
action(parser.default) { request =>
val xrequestKeyID = Context.key[String]("X-Request-ID", null)
val requestID1: String = Kamon.currentContext().get(xrequestKeyID)
println(s"requestID1=$requestID1")
val headers = request.headers.toString()
println(s"Header=${headers}")
Results.Accepted
}
使用标头制作卷曲时,Kamon 没有读取 http 标头。
curl --location --request GET 'http://localhost:11000/helloWorld' --header 'X-Request-ID: hello'
这是终端中的结果。
requestID1=
Header=List((Timeout-Access,<function1>), (Remote-Address,127.0.0.1:56854), (Raw-Request-URI,/helloWorld), (Tls-Session-Info,[Session-1, SSL_NULL_WITH_NULL_NULL]), (Host,localhost:11000), (User-Agent,curl/7.58.0), (Accept,*/*), (X-Request-ID,hello))
您知道如何将 kamon 上下文用于广播密钥吗?
非常感谢!