#java #spring #spring-boot #microservices
Вопрос:
Я пытаюсь кое-что протестировать с помощью микросервисов.
У меня есть 3 сервиса:
- Служба пользователей (Bean)
- Отдел обслуживания (Bean)
- СервисрЕгистрия (EurekaServer)
когда мне нравится, чтобы сотрудники отдела соответствовали моему Пользователю, потому что моя табличка в службе пользователей не может подключиться к Отделу.
Пользовательский сервис Пользователя
@Service
@Slf4j
public class UserService {
@Autowired
private UserRepository userRepository;
@Autowired
private RestTemplate restTemplate;
public User saveUser(User user) {
log.info("Inside saveUser of UserService");
return userRepository.save(user);
}
public ResponseTemplateVO getUserWithDepartment(Long userId) {
log.info("Inside getUserWithDepartment of UserService");
ResponseTemplateVO vo = new ResponseTemplateVO();
User user = userRepository.findByUserId(userId);
Department department =
restTemplate.getForObject("http://DEPARTMENT-SERVICE/departments/" user.getDepartmentId()
,Department.class);
vo.setUser(user);
vo.setDepartment(department);
return vo;
}
}
приложение.сервис пользователей yml
server:
port: 9092
spring:
application:
name: USER-SERVICE
eureka:
client:
register-with-eureka: true
fetch-registry: true
service-url:
defaultZone: http://localhost:8761/eureka/
instance:
hostname: localhost
Приложение UserService для пользователей
package com.dailycodebuffer.user;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;
@SpringBootApplication
@EnableEurekaClient
public class UserServiceApplication {
public static void main(String[] args) {
SpringApplication.run(UserServiceApplication.class, args);
}
@Bean
@LoadBalanced
public RestTemplate restTemplate() {
return new RestTemplate();
}
}
Приложение UserService ServiceRegistry.yml
server:
port: 8761
eureka:
client:
register-with-eureka: false
fetch-registry: false
Код ошибки
2021-06-12 22:35:41.186 ERROR 40280 --- [nio-9092-exec-3] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.web.client.ResourceAccessException: I/O error on GET request for "http://DEPARTMENT-SERVICE/departments/2": Connection timed out: connect; nested exception is java.net.ConnectException: Connection timed out: connect] with root cause
Спасибо за помощь
Комментарии:
1. У вас возникли какие-либо проблемы из-за того, что вы используете исходный
IP
адресDepartment Service
?2. Так в почтальон, мой вам URL-адрес выглядит следующим образом: имя localhost:9092/пользователи/1 Если вы имеете в виду код, когда я бы вам отделении я также попробовал это так: отдел Управления = restTemplate.getForObject(» имя localhost:9002/департаменты » пользователь.getDepartmentId() ,Department.class); но это не работает также … Я могу поделиться с вами своим проектом, если это поможет
3. Насколько я понимаю, ваше
department-service
приложение не работает. Вы уверены, что запущено правильное приложение?4. ДА… так что, как я думаю, служба департамента работает, потому что я могу публиковать в ней разные вещи. Но когда мне нравится получать пользователя, пара отделов в методе getUserWithDepartment, моя табличка Resttemplate не может подключиться к Отделу, я думаю.
5. github.com/rafu07/Microservices вот мой проект, если это поможет