2016-10-07 3 views
0

Ich spalte einen Monolith-Web-Service in mehrere Microservices mit Spring Boot. Um doppelten Code zu reduzieren, extrahierte ich gemeinsam genutzte Teile in einem Maven-Modul, das in den verschiedenen Microservices verwendet wird.Teilen einer Ansicht unter Microservices

Die Monolith-Anwendung hatte eine Healthcheck-Seite, die verschiedene Informationen über den Status des Dienstes und einige Debbing-Infos zeigte. Es ist mit Spring MVC und Jsp implementiert.

Ich möchte diese Ansicht in jedem der Microservices verwenden. Was ist der beste Weg, dies zu tun, ohne den View/Controller zu duplizieren?

Ich dachte über das Hinzufügen eines Web-Moduls zu dem geteilten Maven-Projekt, das den Controller enthält, Ansicht, Federmvc-Einstellungen, ... Aber ich bin mir nicht sicher, ob es gut ist, zwei Web-Module in einem Microservice zu haben .

Antwort

1

Haben Sie in Betracht gezogen, den Federbeinantrieb zu verwenden, um Informationen zur Gesundheit (und mehr) der Anwendung abzurufen?

http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#production-ready

Sie könnten dann einen weiteren Micro haben, dass die Informationen von jedem Ihrer Dienste abrufen oder nur einfach überprüfen dann die verschiedenen Endpunkte schlagen (/ Gesundheit,/env, etc.).

UPDATE:

Wenn Sie Sie individuelle Gesundheit Logik, die Sie Ihren eigenen Aktor Endpunkt für die es auch umsetzen können. Darüber hinaus können Sie Ihre eigene Bibliothek erstellen Sie es in allen Microservices wiederzuverwenden:

http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#production-ready-customizing-endpoints-programmatically

46,4 Hinzufügen von benutzerdefinierten Endpunkte

Wenn Sie einen @Bean vom Typ Endpoint fügen dann wird es automatisch über JMX und HTTP verfügbar gemacht werden (falls ein Server verfügbar ist). Ein HTTP-Endpunkt kann durch weiter angepasst werden, indem ein Bean vom Typ MvcEndpoint erstellt wird. Ihr MvcEndpoint ist kein @Controller, aber er kann @RequestMapping (und @ Managed *) verwenden, um Ressourcen verfügbar zu machen.

[Tipp] Wenn Sie dies als Bibliothek Funktion tun sollen Sie erwägen, eine Konfigurationsklasse kommentierte mit @ManagementContextConfiguration zu /META-INF/spring.factories unter dem Schlüssel org.springframework.boot.actuate .autoconfigure.ManagementContextConfiguration. Wenn Sie das tun, wird der Endpunkt in einen untergeordneten Kontext mit allen anderen MVC-Endpunkten verschoben, wenn Ihre Benutzer nach einem separaten -Port oder einer anderen Adresse fragen. Eine auf diese Weise deklarierte Konfiguration kann ein WebConfiguratorAdapter sein, wenn statische Ressourcen (für Instanz) zu den Verwaltungsendpunkten hinzugefügt werden sollen.

+0

danke für Ihre Idee. Die Sache ist, dass diese Seite mehr als nur Gesundheitsinformationen bietet. Sie können die Log-Log-Levels dieses Service ändern und einige Tasks starten/stoppen, die für diesen Service ausgeführt werden. Es ist sehr individuell und das Ziel ist es, Zeit zu sparen und die vorhandene Lösung für jeden Microservice einfach wiederzuverwenden. – Dave

+0

https: // GitHub.com/codecentric/spring-boot-admin tut das alles und wenn Sie einen Service-Discovery-Mechanismus verwenden, müssen Sie nur eine einzelne Instanz bereitstellen und sie werden sie erkennen. –

+0

Vielen Dank für Ihre Vorschläge. Ich brauche etwas Zeit, um mich damit zu beschäftigen. – Dave

Verwandte Themen