Es tan superficial en el papel, y sé absolutamente que tengo que hacerlo yo solo ~ Parece muy fácil, y es todo tipo de problemas por mí mismo ~ Todos, déjenme hablar lentamente ~
No diré tonterías sobre lo que es Springcloud ~
Eureka
Eureka (pensé que era una abreviatura, resultó ser una palabra, traducida como: ¡Lo encontré, lo encontré! 0.0) es un producto de código abierto de Netflix que proporciona registro y descubrimiento de servicios. Proporciona una implementación completa de Service Registro y descubrimiento de servicios. También es uno de los componentes principales y más importantes del sistema SpringCloud.
La comprensión popular de esto es como un Taobao: ya seas vendedor o comprador, si quieres comerciar, tienes que registrar una cuenta conmigo.
1. Primero cree un nuevo proyecto de maven
2. Introduzca el paquete jar correspondiente en el archivo pom.
Después de aprender el tutorial del jefe, el resultado se informa directamente con la demostración del jefe, y el programa de inicio siempre indica:
Causado por: java.lang.ClassNotFoundException: com.sun.jersey.api.core.DefaultResourceConfig
Deprimido, consulte el paquete jar spring-cloud-starter-eureka-server
Descubrí que el jar de jersey introducido era 1.19.1, y luego lo investigué yo mismo y descubrí que se puede usar 1.19, así que lo introduje en el archivo pom. Según tengo entendido, 1.19.1 es definitivamente más alto que la versión 1.19 ¿Cómo puede no funcionar?
Reinicie, y luego el error desapareció, y se informó un error más tarde, y no se pudo encontrar otra clase en el paquete de servo. El mmp ~ es un problema de versión nuevamente, y luego se introduce el paquete de servo, ok ~
Finalmente, se forma el siguiente archivo de configuración pom
1 <parent> 2 <groupId> org.springframework.boot </groupId> 3 <artifactId> spring-boot-starter-parent </artifactId> 4 <version> 1.5.8.RELEASE </version> 5 </parent> 6 7 <dependencies> 8 <dependency> 9 <groupId> org.springframework.cloud </groupId> 10 <artifactId> spring-cloud-starter </artifactId> 11 </dependency> 12 <dependency> 13 <groupId> com. sun.jersey </groupId> 14 <artifactId> jersey-bundle </artifactId> 15 <version> 1.19 </version> 16 </ dependencia> 17 18 <dependencia> 19 <groupId> com.netflix.servo </groupId> 20 <artifactId> servo-core </artifactId> 21 <version> 0.12.7 </version> 22 </dependency> 23 <dependency> 24 <groupId> org. springframework.cloud </groupId> 25 <artifactId> spring-cloud-starter-eureka-server </artifactId> 26 </dependency> 27 </dependencies> 28 <dependencyManagement> 29 <dependencies> 30 <dependency> 31 <groupId> org.springframework.cloud </groupId> 32 <artifactId> dependencias de spring-cloud </artifactId> 33 <version> Dalston.RC1 </version> 34 <type> pom </type> 35 <alcance> importar </scope> 36 </dependency> 37 </dependencies> 38 </dependencyManagement> 39 <repositories> 40 <repository> 41 <id> spring-milestones </id> 42 <name> Spring Milestones </name> 43 <url> https://repo.spring.io/milestone < / url> 44 <snapshots> 45 <enabled> false </enabled> 46 </snapshots> 47 </repository> 48 </repositories>
3. Escribe el código de inicio
1 @SpringBootApplication 2 @EnableEurekaServer 3 Aplicación de clase pública { 4 5 public static void main (String [] args) { 6 SpringApplication.run (App.class, args); 7} 8}
Preste atención a agregar la anotación EnableEurekaServer
4. Agregar archivo de configuración
Hay dos formatos para agregar este archivo de configuración, uno es application.properties y el otro es application.yaml. No compararemos la diferencia entre los dos formatos. Pero por la ubicación de este archivo, todavía estuve perplejo por un tiempo, y finalmente traté de encontrar la ubicación como se muestra en la figura.
Y debe prestar atención a que el nombre del archivo no puede ser menor que 0.0 para una letra. Solo porque no presté atención al escribir una carta, también reporté un error. . . .
Application.properties, el contenido del archivo es el siguiente:
1 spring.application.name = spring-cloud-eureka 2 server.port = 8000 3 eureka.client.register-with-eureka = false 4 eureka.client.fetch-registry = false 5 eureka.client.serviceUrl.defaultZone = http : // localhost: $ {servidor.puerto} / eureka /
Tenga en cuenta que la tercera línea es verdadera por defecto, es decir, si no agrega este falso, se informará un error al inicio, ¡porque querrá registrarse a sí mismo! ! ! La cuarta línea también es cierta de forma predeterminada, lo que significa si quiere que la información se registre en el centro de servicio.
5. Inicie el registro
Ingrese localhost: 8000 en el navegador para verificar si el registro se inicia normalmente, aparece la siguiente captura de pantalla, indicando que está bien
Con el centro de registro, vamos a contratar un proveedor de servicios y un consumidor de servicios.
proveedores de servicio
1. Crea un nuevo proyecto de maven
2. Introduzca el mismo paquete jar que el servicio de registro en el archivo pom.
3. Escriba application.properties
El contenido es el siguiente:
1 spring.application.name = spring-cloud-producer 2 server.port = 9000 3 eureka.client.serviceUrl.defaultZone = http: // localhost: 8000 / eureka /
La primera línea es para nombrar su propio servicio, la segunda línea es para configurar su propio puerto de acceso y la tercera línea es para configurar en qué registro desea registrarse. Debido a que configuramos el registro eureka para que sea el puerto local 8000, entonces escribimos esta dirección
4. Escribe el código de inicio
1 @SpringBootApplication 2 @EnableDiscoveryClient 3 Public class App 4 { 5 public static void main (String [] args) 6 { 7 SpringApplication.run (App.class, args); 8} 9}
Preste atención a agregar la anotación EnableDiscoveryClient
5. Escriba el código de clase del controlador de servicio
1 @RestController 2 clase pública HelloController { 3 4 @RequestMapping ("/ hola") 5 cadena pública hola (@RequestParam nombre de cadena) { 6 return "hola" + nombre + ", ¡encantado de conocerte!"; 7} 8}
Aquí el proveedor de servicios está completo, inicie el programa, no se reporta ningún error, actualice la página del centro de registro, verá el servicio actualmente registrado en la Aplicación.
Llamador de servicio
1. Crea un nuevo proyecto de maven
2. También introduzca el mismo contenido que antes en el archivo pom.
3. Escriba application.properties
1 spring.application.name = spring-cloud-consumer 2 server.port = 9001 3 eureka.client.serviceUrl.defaultZone = http: // localhost: 8000 / eureka /
La primera línea también nombra el servicio actual, la segunda línea establece el puerto y la tercera línea establece la URL del registro.
4. Escribe el código de inicio
1 @SpringBootApplication 2 @EnableDiscoveryClient 3 @EnableFeignClients 4 Aplicación de clase pública 5 { 6 principal vacía estática pública (String [] args) 7 { 8 SpringApplication.run (App.class, args); 9} 10}
Tenga en cuenta que esta clase de inicio tiene una anotación EnableFeignClients más que el proveedor de servicios. La función de esta anotación es habilitar la simulación para llamadas remotas.
5. Escribe la implementación de la llamada fingida
1 @FeignClient (name = "spring-cloud-producer") 2 interfaz pública HelloRemote { 3 @RequestMapping (value = "/ hello") 4 public String hello (@RequestParam (value = "name") String name); 5}
Tenga en cuenta que esta es una interfaz. El nombre del parámetro de anotación anterior es para especificar el nombre del proveedor de servicios al que está llamando actualmente. También tenga en cuenta que el nombre del parámetro en el método es coherente con el parámetro en el proveedor de servicios
6. Escriba la clase de controlador de llamadas de servicio
1 @RestController 2 ConsumerController de clase pública { 3 4 @Autowired 5 HelloRemote HelloRemote; 6 7 @RequestMapping ("/ hello / {name}") 8 public String hello (@PathVariable ("nombre") String name) { 9 return HelloRemote.hello (nombre); 10} 11 12}
Introduzca la interfaz HelloRemote en la clase actual, llamando al método local hello y luego llamando a los métodos en la interfaz HelloRemote
Inicie el programa y no se informa de ningún error.
Actualice el registro en este momento, debería ver que se han registrado 2 servicios
Verificación de prueba
Abra el navegador e ingrese: http: // localhost: 9001 / hello / JJ
Como se muestra en la figura anterior, el resultado se devuelve normalmente, lo que indica que toda la llamada de servicio y el proveedor están bien. ! !