2016-11-07 178 views
0

重新定義郵件通知模板中,我們可以有一個變量的樣品供的模板重新定義,documentation是稀缺的呢?春季啓動管理員

在類包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}"; 

在我的具體使用情況下,我繼承了一堆,我想用ping或監視他們還活着的應用程序。我沒有控制他們,但我的應用程序依賴於他們。

我的應用程序不會失敗,但可能會行爲不端(重要的一點!)。

所以我加了一堆海關HealthIndicator的,讓他們平安監控,這很好地工作,而我是通過改變IP寄通知,偉大很高興!

但是有一個,但是,發送的消息讓我覺得比應用程序是失敗的,而不是健康指標是狀態OUT_OF_SERVICE,對於DevOps的不必要的壓力。

來到我的問題,我怎麼能添加一些額外的變量,因此一些精心製作的SPEL將區分不是應用程序狀態的變化,即Web應用程序脫機的健康指標信息狀態更改。

是SBA關鍵字可用字典用於重新定義例如spring.boot.admin.notify.mail.text郵件通知的配置選項?

我想這對其他通知者是hipchat,Slack是有效的。

謝謝。

回答

1

評估SpEL表達的上下文是事件。 因此,所有來自ClientApplicationEvent(或事件實例的相應子類(例如ClientApplicationStatusChangedEvent))的屬性都可用。

如果沒有足夠可運送自己的MailNotifier的子類..

+0

不知道我明白爲什麼需要子類MailNotifier?這違背瞭如表5所述定義[https://codecentric.github.io/spring-boot-admin/1.4.3/#mail-notifications]郵件正文或主題的用途,是否正確?我只是想修改默認值的主體或主題。 但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看起來很有希望獲得一些額外的數據。