2016-11-07 14 views
0

Можем ли мы иметь образец переменных, доступных для переопределения шаблонов, documentation здесь мало?Переопределение шаблона уведомлений о доставке для Spring Boot Admin

В пакете класса de.codecentric.boot.admin.notify.MailNotifier Я прочитал

private static final String DEFAULT_SUBJECT = "#{application.name} (#{application.id}) is #{to.status}"; 
private static final String DEFAULT_TEXT = "#{application.name} (#{application.id})\nstatus changed from #{from.status} to #{to.status}\n\n#{application.healthUrl}"; 

В моем конкретном случае использования я унаследовал кучу приложений, которые я хочу свистеть или контролировать их в живых. Я не контролирую их, но мое приложение зависит от них.

Мое приложение не подведет, но может ошибочно (важно!).

Таким образом, я добавил кучу обычаев HealthIndicator, чтобы заставить их отслеживать ping, которые отлично работают, и я был очень доволен изменением IP-адреса, которое было отправлено, отлично!

Но есть, но сообщение отправлено, дайте мне подумать, что приложение не работает, тогда как индикатор состояния был статусом OUT_OF_SERVICE, ненужным стрессом для DevOps.

Приходите к моему вопросу, как добавить дополнительные переменные, в результате чего некоторые тщательно обработанные SPEL будут отличать изменение статуса сообщения индикатора состояния здоровья, чем изменение статуса приложения, т.е. webapp переходит в автономный режим.

Является ли словарь ключевых слов SBA доступным для использования для переопределения, например spring.boot.admin.notify.mail.text Вариант настройки уведомлений почты?

Я предполагаю, что это относится к другим уведомителям, являющимся hipchat, Slack.

Спасибо.

ответ

1

Контекст для оценки выражения SpEL - это событие. Поэтому доступны все свойства от ClientApplicationEvent (или соответствующий подкласс для экземпляра события (например, ClientApplicationStatusChangedEvent)).

Если его не хватает вы можете отправить свой собственный подкласс MailNotifier ..

+0

Не уверен, что я понимаю, почему требуется подкласс MailNotifier?Это лишает цель определить [https://codecentric.github.io/spring-boot-admin/1.4.3/#mail-notifications] почтовый ящик или объект, как описано в таблице 5, правильно? Я просто хочу изменить тело или объект значения по умолчанию. Однако ClientApplicationEvent как контекст интересен тем, что в конечном итоге выдает больше значений, поэтому его можно использовать при оценке контекста! Любые указатели? Где срабатывает/обнаружено изменение статуса индикатора работоспособности? – dilbertside

+0

вам нужно только подклассировать почтовый уведомитель, если данный контекст для выражения SpEL не соответствует вашим потребностям. В случае изменения статуса контекст имеет тип 'ClientApplicationStatusChangedEvent', который имеет свойства' from' и 'to', имеющие старый и новый статус. – joshiste

+0

Да согласен, но контекст не содержит достаточно свойств для извлечения, например, например, имени индикатора работоспособности. Похоже, что «StatusUpdater.updateStatusForAllApplications» несет ответственность за публикацию изменений статуса индикатора работоспособности. Невозможно ли иметь конкретное событие, например ClientApplicationHealthStatusChangedEvent, для обработки большего количества свойств? – dilbertside

0

Ответ: нет, не может сделать в текущей базе кода без изменения кода. SBA ключевые слова уведомления/переменные доступны следующие:

  • application.name
  • application.id
  • application.healthUrl
  • application.managementUrl
  • application.serviceUrl
  • application.statusInfo .status
  • from.status
  • to.status
  • метка времени
  • типа

У нас нет ничего другого. Однако StatusUpdater.queryStatus выглядит многообещающим для получения дополнительных данных.