Я работаю над POC, чтобы показать своего менеджера. Я создал 4 микросервиса, используя springboot (1 - это MVC + 2 SOAP + 1 простая весенняя загрузка для Eureka). Сначала я пошел в учебник, учебник Этот разработал эти службы полностью на REST архитектура. Я прочитал все статьи в учебнике, который очень помогает мне понять.
Но мое требование - создать приложение того же типа, но с использованием веб-служб SOAP. Как бы то ни было, с помощью эта статья я создал: 2 веб-службы SOAP + 1 MVC + 1 простое приложение для весенней загрузки (Eureka). Все 3 сервиса зарегистрированы в сервисе Eureka, я также вижу в Eureka Console:
все запущены и работают. Они прекрасно общаются с мыльным клиентом. Я запустил приложение, оно работает отлично.
Но когда я даю демо менеджеру, он не был полностью удовлетворен. Он мне это сказал
business logic wise its fine but your services are communicating directly each other, there is no role of Eureka in your application. In your application Eureka is showing which service is up and running, nothing else. This is not complete microservice pattern which you shown to me.
Затем я гулю об этом и исследую архитектуру микросервисов. Я понял это. Но моя проблема в том, что мои услуги разработаны с использованием SOAP, и я не нашел ни одной соответствующей статьи или какого-либо учебного пособия, которое могло бы мне помочь в этом. Все статьи предназначены для REST-дизайна.
Я даже изучил [эту статью 7, но это мне не очень помогло.
Так что некоторые могут предоставить любую помощь / ссылку / код, который может помочь мне в соответствии с моими требованиями. Мне нужно приложение, в котором сервисы SOAP общаются только через Eureka.




Эврика - это реестр ваших услуг. Они не общаются через это. Что вы можете сделать, так это получить зарегистрированные хосты от Eureka-service-resgistry. Вы можете сделать это с помощью ленточный клиент. Вы получаете хост и порт и можете использовать их в своем URL-адресе SOAP. Если существует несколько экземпляров одной и той же службы, вы также получите балансировку нагрузки на стороне клиента.
public class MyClass {
@Autowired
private LoadBalancerClient loadBalancer;
public void doStuff() {
ServiceInstance instance = loadBalancer.choose("stores");
URI storesUri = URI.create(String.format("http://%s:%s", instance.getHost(), instance.getPort()));
// ... do something with the URI
}
}