1

我在基于 akka 的应用程序中使用 slf4j,并使用它的 MDC 功能来记录上下文信息。我有一个基础演员,他从一组演员发送和接收消息,这些演员又与另一个演员进行通信,依此类推。如何将基础 Actor 中的 MDC 设置传播给其他 Actor?我想避免使用其他框架,如 Play。

4

1 回答 1

0

方法 1:使用 Akka 的接收管道功能 - http://doc.akka.io/docs/akka/2.4.16/contrib/receive-pipeline.html

使用接收管道的示例解决方案 - https://stackoverflow.com/a/39320938/3076069

方法 2: 1.创建一个扩展 Actor 的特征 2.覆盖方法 aroundReceive 以填充 MDC 3.为 ask_and_forget 创建新方法并发送该方法 使用 mdc 发送消息并在内部提取它

方法 3: 1. 创建一个 trait,在接收到消息时处理 MDC 并混入每个 Actor。(假设到每个 Actor 的传入消息将始终具有填充 MDC 所需的字段)。

我更喜欢方法 1 和 3,因为它们为应用程序引入了最少的破坏性更改,并且对于任何将在使用任何一种方法的现有应用程序上工作的新开发人员来说都显得更直观。

于 2017-01-12T15:13:06.217 回答