Я пытаюсь создать микросервисы, используя Spring-boot Java и SteelToe ASP.NET.
Шаг 1: Я создал полный сервис с использованием Java (сервис с пользовательским интерфейсом и API. Он размещен на PCF). Внутри API определен ClassesControler.
Шаг 2. Создайте микросервис с помощью ASP.NET, SteelToe. Зарегистрируйте службу в Eureka и сделайте ее доступной для обнаружения с помощью Zuul.
Шаг 3. Используйте подход «Интерфейс, сервис» для доступа к микросервису (ам) JAVA.
namespace employee-client.Service
{
public interface IRelayService
{
Task<HttpResponseMessage> getClassesList(string relativeUrl = "/api/v1/classes");
}
}
Сервис с реализацией для интерфейса:
namespace employee-client.Service
{
public class RelayService : IRelayService
{
DiscoveryHttpClientHandler _handler;
string _accessToken;
private const string BASE_URL = "https://www.example.com";
public QortaService(IDiscoveryClient client, string accessToken)
{
_handler = new DiscoveryHttpClientHandler(client);
_accessToken = accessToken;
}
public async Task<HttpResponseMessage> getClassesList(string relativeUrl)
{
string classesUrl= BASE_URL + relativeUrl;
HttpClient client = GetClient();
HttpRequestMessage request = new HttpRequestMessage();
request.RequestUri = new Uri(classesUrl);
request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", _accessToken);
return await client.SendAsync(request, HttpCompletionOption.ResponseContentRead);
}
private HttpClient GetClient()
{
var client = new HttpClient(_handler, false);
return client;
}
}
}
Я придумал этот подход на основе примера в SteelToe, но я ненавижу жестко кодировать BASE_URL. Вопрос: Мне очень нравится подход к аннотации @FeignClient, используемый в Java. Любые идеи о том, как я могу лучше получить доступ к существующему микросервису. Если да, то пример был бы очень признателен
Изменить: я изменил вопрос, чтобы сделать его более понятным. Поток трафика идет от службы Java к службе .NET. Служба .NET запрашивает список классов из контроллера в службе JAVA (ClassesController.java)