2017-08-29 70 views
2

我們有許多相關的Java Spring應用程序在我們的服務器上運行。讓我們稱他們爲App1,App2 & App3。按照標準,所有這些都使用common-utils.jar中的通用代碼。我希望這些應用程序(App1,App2 & App3)將其狀態廣播到一個或多個遠程監聽器。對於例如 App1:我未能讀取文件abc。 App2:我使用了超過90%的堆空間等。JMX通知設計

這些事件的監聽者將採取特定的操作,例如根據收到的通知向支持人員和/或客戶端發送電子郵件。

我能想到的最佳解決方案是在our-common-utils.jar中啓用NotificationSender JMX(實現NotificationBroadcasterSupport)bean。這將有一個消息從通知隊列中消耗,並將sendNotification()發送給每個通知的偵聽器。這將由我們的生態系統中的每個應用程序完成,但使用common-utils的通用代碼。

您是否發現此設計中存在任何缺陷?任何更有效的方法/框架?

非常感謝:)

回答

1

替代解決方案是使用任何分佈式協調服務zookeeper例如。我在我的第一個微服務項目中使用它。正如我所見,您正在使用spring。 Spring雲提供了可以以聲明方式使用的必要解決方案。我會把你的注意力放在@FeignClient。這是非常簡單的使用和靈活在世界上spring

如果我現在要解決這個問題,我會使用基於spring hystrix的解決方案。爲了簡化你的Java服務之間的集成,我建議檢查service-registration-and-discovery


忽略我的意見,如果spring是不是在你的項目的一般發動機零件(可能是你需要其他廠商的解決方案,有很多的替代品)。我將注意力集中在彈簧解決方案上,因爲彈簧在我的項目中不受限制,如果合理,我可以使用任何我希望的東西。