Die ersten Artikel konzentrieren sich hauptsächlich auf die Verwendung von Eureka im Registrierungszentrum. Als nächstes können Sie einen Dienstanbieter erstellen, der sich bei Eureka registrieren kann.
Siehe den Demo-Quellcode: https://github.com/ryan-miao/spring-cloud-edgware-demo/tree/master/provider-demo
Um die Versionskontrolle zu erleichtern, werden die nächsten Projekte basierend auf dem übergeordneten https://github.com/ryan-miao/spring-cloud-edgware- --Demo konfiguriert.
Erstellen Sie ein Kind-Moudle-Anbieter-Demo
Erstellen Sie ein untergeordnetes Modul mit dem Project Name Provider-Demo. Füllen Sie Springboot- und Springcloud -Abhängigkeiten aus
<Deangcies> <!-Springboot Depellentcy Start-> <De vorstellen> <gruppe> org.springFramework </abhängig> <depeencing> <gruppe> org.springFramework.boot </Groupid> <artifactID> Spring-Boot-Devtools </artifactid> <optional> true </optional> </abhängig> </gruppe> <gruppe> com.fasterxml.jackson <artifactId> Jackson-Datatyp-jsr310 </artifactId> </abhängig> <Depopentcy> <gruppe org. <artifactid> Springfox-Swagger2 </artifactId> </abhängig> <depeopcy> <gruppe> io.springfox </Groupid> <artifactId> Springfox-Swagger-ui </artifactId> </abhängig> <!-Tools-Klassenstart-> <De vorangebracht> </artifactid> </abhängig> </gruppen-> </gargruppe> com.google.google <artifactId>guava</artifactId> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>net.logstash.logback</groupId> <artifactid> logstash-logback-ccoder </artifactid> </abhängig> <!-Tool Class End-> </abhängig>
spring-boot-starter-web bietet Webfunktionen, spring-boot-starter-actuator für Projektstatistiken und grundlegende Überwachungsendpunkte. Wenn Sie die Spring-Boot-Admin-Überwachung verwenden möchten, müssen Sie den Entwicklungsmodus jackson-datatype-jsr310 spring-boot-devtools spring-cloud-starter-eureka swagger lombok Es sieht erfrischend erfrischend aus. guava große und vollständige Java Essential Class Library logstash-logback-encoder möchte Protokolle für Elche sammeln, diesen Appender verwenden
Start -up -Klasse
@EnablediscoveryClient@SpringBootApplicationPublic Class ProviderDemoApplication {public static void main (String [] args) {SpringApplication.run (ProviderDemoApplication.CLASS, args); }} @EnableDiscoveryClient , um die Serviceregistrierung zu aktivieren
Diese ProviderDemoapplication sollte auf der äußersten Ebene des Projektpakets platziert werden, da @springbootAppliatin die Annotation von @Componentscan enthält und der Standard -Scan unter diesem Klassenpaket gescannt wird, andernfalls muss der Scan manuell angegeben werden.
Stolzieren
Prahlerei ist eine Konfigurationsklasse
@EnableSwagger2@Configurationpublic class SwaggerConfiguration { private ApiInfo apiInfo() { return new ApiInfoBuilder() .title("Service Provider API") .description("Provide user information query") .termsOfServiceUrl("") .version("1.0.0") .build(); } /*** Definieren Sie die API -Konfiguration. */ @Bean public docket api () {Neues Docket zurückgeben (DokumentationType.swagger_2) .Select () .APIS (RequestHandlerSelectors.withClassAnnotation (api.class)) .build () .apiinfo (apiInfo ()); }}Für das Routing der Swagger -Seite müssen wir Folgendes leiten:
Erstellen Sie einen Controller zum Navigieren
@ControllerPublic Class Homecontroller {@getmaping (value = {"/api", "/"}) public String api () {return "redirect:/wagger-ui.html"; }}Nehmen wir eine Controller -Schnittstelle
@Api@RestController@RequestMapping("/api/v1/users")public class UserController{ private List<User> users = Lists.newArrayList( new User(1, "Tan Haoqiang", 100, LocalDate.now()), new User(2, "Yan Weimin", 120, LocalDate.now()), new User(3, "Tan Haoqiang", 100, localdate.now ()), neuer Benutzer (4, "James Gosling", 150, localdate.now ()), neuer Benutzer (6, "Doug Lea", 150, localdate.now ()); @Getmapping ("/") publiclist <useervo> list () {return users.stream () .map (u -> new uservo (u.getId (), u.getName (), u.getage (), u.getBirth ()) .collect (collectors.tolist ()); }}Einige einfache Umgebungskonfigurationen
application.yml
Frühling: Anwendung: Name: Provider-Demo Jackson: Serialisierung: write_dates_as_timestamps: falsche Standard-Property-Inclusion: Non_null#Server-Ablaufzeitkonfiguration. Wenn der Herzschlag nach dieser Zeit nicht empfangen wird, wird Eurekaserver diese Instanz entfernen. Beachten Sie, dass Eurekaserver Eureka.server.eviction-Interval-Timer-in-MS festlegen muss, ansonsten ist diese Konfiguration ungültig. Diese Konfiguration ist im Allgemeinen die dreifache Dienste für die Erfrischungszeitkonfiguration. #Default 90Seureka.instance.Lease-Expiration-Duration in Sekunden: 15 #Der Service wird die Zeitkonfiguration aktualisiert, und die Herzschläge sind jedes Mal aktiv, diesmal #Default 30seurka.instance /Swagger-Resources /API-DocsLog: Pfad: Protokolle
application-dev.yml
Management: Sicherheit: aktiviert: falseeeureka: kunden: serviceurl: defaultZone: http: // localhost: 8761/eureka/logstash: url: localhost: 4560
Ich muss es hier erwähnen, dass ich, da ich Logstash integriere, Logstash installieren muss. Siehe Elk für die Einführung. Natürlich können Sie es überspringen, solange Sie die Konfiguration von logback.xml nicht angeben, können Sie den Logstash in der Abhängigkeit entfernen.
Protokollkonfiguration
Der Logback wird standardmäßig als Protokoll -Framework verwendet. Die einfache Konfiguration ist wie folgt. Für diejenigen, die Logstash nicht verwenden möchten, entfernen Sie einfach den Logstash Appender.
Erstellen Sie unter Ressource eine neue logback-pring.xml
<xml version = "1.0" coding = "utf-8"?> <configuration scan = "true" scanperiod = "60 Sekunden" Debug = "False"> <SpringProperty Scope = "context" name = "Appname" Source = "Spring.Application.Name" DefaultValue = "Unbekannt"/> <SpringProperty = "contexte" name ","/> <"/> <"/> <"<"/> <"<"/> <"<"/> <"<"/> "< defaultValue="logs"/> <springProperty scope="context" name="logstashurl" source="logstash.url" defaultValue="localhost:4560"/> <include resource="org/springframework/boot/logging/logback/base.xml"/> <!--Output to console--> <appender name="console">LoggingInterceptor <encoder> <pattern>%d{HH:mm:ss.SSS} %X{req.remoteHost} %X{req.requestURI} ${appName} [%thread] %-5level %logger{36} - %msg%n </pattern> </encoder> </appender> <!--Output to file--> <appender name="file"> <rollingPolicy> <fileNamePattern> $ {log.Path}/{Appname}.%d {yyyy-mm-dd} .Log </fileNeMepeN> </rollingPolicy> <coder %X {req.Requesturi} %x {req.Useragent} %x {req.method}-[ %Thread] %-5LEVEL %Logger {36}- %MSG %n </musters> </Encoder> </Appender> <! <Encoder charset = "utf-8"/> </appender> <springProfile name = "dev"> <root Level = "info"> <appender-ref ref = "console"/> <appender-ref ref = "Datei"/> <Appender-ref = "Datei"/> <Appender-ref = "Datei"/> <Appender-ref <springProfile name = "testen, prod"> <root Level = "info"> <Appender-ref ref = "file"/> <Appender-ref ref = "logstash"/> </root> </SpringProfile> </configuration>Start-up
Stellen Sie sicher, dass Eureka gestartet wurde, Administrator am besten gestartet wird, um das Anzeigen des App -Status zu erleichtern, und das Protokollierungssystem von ELK ist ebenfalls am besten verfügbar. Natürlich ist nur Eureka eine Notwendigkeit.
Kompilieren und Paket
MVN Clean Install-Paket Springboot: Umpackung
Führen Sie die Hauptmethode aus, geben Sie das Profil als Dev an. Sie können die Ausführungskonfiguration in Idea bearbeiten und Parameter hinzufügen
--Spring.profiles.active = dev
Oder starten Sie das Befehlszeilenjar
Kopieren Sie den Code wie folgt: java -xms256m -xmx1g -xx:+useg1gc -jar ./target/provider-demo -0.0.1-snapshot.jar ---Spring.profiles.active = dev
Nach dem Start auf Eureka zugreifen
Besuchen Sie den Administrator
Besuchen Sie den Anbieter-Demo
Stellen Sie unsere API dem Verbraucher aus
Da es Dienstleister gibt, muss es für den Verbraucherverbrauch der Verbraucher sein. Wie sollten Verbraucher verzehrt werden? Nennen Sie diese HTTP -Anfrage einfach manuell. Der zuvor erwähnte Swagger Rastful -Vertrag sind die vom Dienstanbieter bereitgestellten Parameter und Anforderungen, um den Zugriff zu beantragen. Wenn der Verbraucher diesen Kunden manuell entwickelt, ist er zeitaufwändig und fehleranfällig. Daher sollten Sie als Dienstleister SDK oder Kunden dem Verbraucher zur Verwendung zur Verfügung stellen.
Im Spring Cloud Technology System haben Remote -Anrufe natürlich oberste Priorität. Die spezifische Verwendung, die ich gefunden habe, ist vorgetäuscht+Band+Hytrix.
Durch das deklarative Schnittstellen -Docking von Feign wird der Verbraucheraufruf an den Anbieter implementiert. Hystrix ist ein gesunder Leistungsschalter.
Hier müssen wir zunächst die Schnittstelle von TEIGN bereitstellen.
Verfeinern Sie die API des Controllers in eine Schnittstelle. Erstens erstellen wir ein neues Projekt
https://github.com/ryan-miao/spring-cloud-edgware-demo/tree/master/provider-api
Fügen Sie dieses Projekt in die Abhängigkeitsliste des Anbieters-Demo ein
<!-Interne Abhängigkeit-> <deponcy> <GroupId> com.test </Groupid> <artifactId> Provider-api </artifactId> <version> 0.0.1-Snapshot </Version> </abhängig> <!-interne Abhängigkeit End->
Beenden Sie den UserAPI-Schnittstellenkanal im Anbieter-API-Projekt
@RequestMapping ("/api/v1/user") public interface userAPI {@getMapping ("/") LIST <Uservo> list ();}Der Controller von Provider-Demo wird wie folgt modifiziert
@Api@RestControllerpublic class UserController implements UserApi { private List<User> users = Lists.newArrayList( new User(1, "Tan Haoqiang", 100, LocalDate.now()), new User(2, "Yan Weimin", 120, LocalDate.now()), new User(3, "Tan Haoqiang", 100, LocalDate.now ()), neuer Benutzer (4, "James Gosling", 150, localdate.now ()), neuer Benutzer (6, "Doug Lea", 150, localdate.now ()); @Override Public List <Userervo> list () {return users.stream () .map (u -> new uservo (u.getId (), u.getName (), u.getage (), u.getBirth ()) .Collect (Collectors.tolist ()); }}Auf diese Weise hat sich der Controller nicht verändert, wurde aber aus dem API -Pfad gezogen. Der unabhängige Modulanbieter ist der Kunde, den wir dem Verbraucher zur Verfügung stellen. Der nächste Abschnitt verwendet Verbraucher, um zu konsumieren.
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.