централизованная оболочка регистрации для микросервисов - PullRequest
2 голосов
/ 10 марта 2019

У меня есть пружинные загрузочные микросервисы, я использую фабрику логгеров sl4j, и в каждом сервисе я регистрирую сообщения следующим образом:

Ошибка LOG во время исключения:

LOG.error("service:{};msg:{};ex:{}", serviceName, msg, ex.getMessage(), ex);

Ошибка журнала во время проверки:

LOG.error("service:{};msg:{}", serviceName, msg);

Информация журнала:

LOG.info("service:{};event:{};msg:{}", service, event, message);

Это распространено во всех моих микросервисах, централизовать эти сообщения регистрации с помощью оболочки или так? Или поместить оболочку в отдельное приложение maven и добавить зависимость как jar?

Я хочу знать, какой может быть лучший дизайн, помогут фрагменты кода.

1 Ответ

2 голосов
/ 10 марта 2019

В целом, неплохо бы отделить задачи, доменную логику от инфраструктуры.

Например, если вы развертываете свой сервис как AWS Lambda, вы можете рассматривать его как своего рода развертывание.

Затем вы должны создать отдельный модуль Maven, в котором находится только код вашего Lambda-обработчика.Кроме того, у вас может быть модуль для функции Azure или приложение Spring Boot.Вы можете склеить их вместе с помощью Spring Context.

Ваша регистрация, упомянутая выше, будет тогда частью вашего модуля развертывания, потому что домен не должен ничего знать о "услугах".

Если ваша обработка ошибок сложна, вы можете создать для нее модуль lib.

Пример для AWS Lambda:

public class Hello implements RequestHandler<Object, String> {
    private DomainLogic domain;
    private ErrorHandling errHandling;

    Hello(DomainLogic domain, ErrorHandling errHandling) {
        this.domain = domain;
        this.errHandling = errHandling;
    }

    @Override
    public String handleRequest(Object input, Context context) {
        try {
           return domain.sayHello(input);
        }
        catch  (Exception e) {
            errHandling.handle(e);
            throw e;
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...