Как SOAP веб-сервисы общаются только через Eureka? не прямо друг к другу - PullRequest
0 голосов
/ 05 января 2019

Я работаю над POC, чтобы показать моего менеджера. Я создал 4 микросервиса с помощью springboot (1 - MVC + 2 SOAP + 1 простая весенняя загрузка для Eureka). Сначала я обратился к учебнику, This Учебное пособие разработало эти сервисы, полностью разработанные для архитектуры REST. Я прочитал все статьи в этом уроке, которые мне очень помогают понять.

Но мое требование состоит в том, чтобы создать приложение того же типа, но с использованием веб-служб SOAP. Так или иначе, с помощью этой статьи я создал: 2 SOAP веб-сервиса + 1 MVC + 1 простое приложение с весенней загрузкой (Eureka). Все 3 услуги зарегистрированы в сервисе Eureka, я также вижу в консоли Eureka:

PFA

все в порядке. Они прекрасно общаются с мыльным клиентом. Я запустил приложение, оно отлично работает.

Но когда я даю демонстрацию менеджеру, он не был полностью удовлетворен. Он сказал мне, что

бизнес-логика хороша, но ваши сервисы взаимодействуют друг с другом, Eureka не играет никакой роли в вашем приложении. В вашем приложении Eureka показывает, какая служба запущена и работает, больше ничего. Это не полный шаблон микросервиса, который вы мне показали.

Тогда я расскажу об этом и изучу архитектуру микросервиса. Я понял это. Но моя проблема в том, что мои сервисы спроектированы с использованием SOAP, и я не нашел ни одной соответствующей статьи или учебника, который мог бы помочь мне в этом. Все статьи для дизайна REST.

Я даже исследовал [эту статью 7 , но это мне не сильно помогло.

Так что некоторые могут предоставить любую помощь / ссылку / код, который может помочь мне в соответствии с моим требованием. Мне нужно приложение, в котором сервисы SOAP взаимодействуют только через Eureka.

1 Ответ

0 голосов
/ 10 января 2019

Eureka - это реестр ваших услуг. Они не общаются через это. Что вы можете сделать, это получить зарегистрированных хостов от Eureka-service-resgistry. Вы можете сделать это с помощью клиента ленты . Вы получаете хост и порт и можете использовать их в своем SOAP URL. Если есть несколько экземпляров одной и той же службы, вы также получите балансировку нагрузки на стороне клиента.

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
    }
}
...