2017-01-11 5 views
1

Я использую slf4j в своем приложении на основе akka и используя его функцию MDC для регистрации контекстной информации. У меня есть один базовый актер, который отправляет и получает сообщения от множества актеров, которые, в свою очередь, общаются и с одним другим актером и так далее. Как распространять настройку MDC в базовом актере другим актерам? Я хотел бы избежать использования дополнительных фреймворков, таких как Play.Propagate MDC using slf4j

ответ

0

подход 1: Использование функции Receive трубопровода Акку - http://doc.akka.io/docs/akka/2.4.16/contrib/receive-pipeline.html

раствора образца с помощью Receive трубопровода - https://stackoverflow.com/a/39320938/3076069

подхода 2: 1.Creating черта, которая простирается Actor 2.Override причем способ aroundReceive для заполнения MDC 3.Создание новых методов для ask_and_forget и отправьте их, чтобы отправить сообщение с помощью mdc и извлечь его изнутри

Подход 3: 1. Создайте признак, который обрабатывает MDC при получении сообщения и микширования каждого Актера. (предполагает, что входящее сообщение каждому Актеру всегда будет иметь необходимые поля для заполнения MDC).

Я предпочитаю подход 1 и 3, поскольку они вносят наименее разрушающие изменения в приложение и кажутся более интуитивными для любого нового разработчика, который будет работать с существующим приложением, использующим любой из подходов.

Смежные вопросы