1

I PCF Service Registry bin mit meinem Mikro Dienst registrieren und mit Hilfe der Discovery-Client des eigentlichen Dienst Urls für Inter Service-Anrufe wie unterStahlkappe Service Registry Entdeckung und einen Hostname der aufgelösten URL prefixing

[Route("api/[controller]")] 
    public class CustomerController: Controller 
    { 
     private DiscoveryHttpClientHandler discHttpHandler; 

     private ILogger<ValuesController> logger; 

     private const string RANDOM_CUSTOMER_URL = "https://CustomerService/api/v1/customer/"; 

     //private const string RANDOM_CUSTOMER_URL = "http://localhost:58227/api/v1/customer/"; 

     public CustomerController(IDiscoveryClient client, ILogger<ValuesController> logger) 
     { 
      this.logger = logger; 
      this.discHttpHandler = new DiscoveryHttpClientHandler(client); 
     } 

     /// <summary> 
     /// Retrieves the customer name by invoking Customer Service via 
     /// Service registry lookup 
     /// </summary> 
     /// <param name="id"></param> 
     /// <returns></returns> 
     [Route("GetCustomerName/{id}")] 
     [HttpGet] 
     public async Task<IActionResult> GetCustomerName(int id) 
     { 
      try 
      { 
       var client = GetClient(); 
       var resString = await client.GetAsync(RANDOM_CUSTOMER_URL + id). 
        Result.Content.ReadAsStringAsync(); 
       var respObj = JsonConvert.DeserializeObject<ApiResponse<CustomerDTO>>(resString); 
       if (respObj != null) 
       { 
        return Ok(new { CustomerName = respObj.Result.FirstName + ", " + respObj.Result.LastName }); 
       } 
       return NotFound(); 
      } 
      catch (Exception ex) 
      { 
       logger.LogError(default(EventId), ex, ex.ToString()); 
       return StatusCode(500); 
      } 
     } 

     /// <summary> 
     /// Create an Http client backed by Steeltoe's DiscoveryHttpClientHandler 
     /// </summary> 
     /// <returns></returns> 
     private HttpClient GetClient() 
     { 
      var client = new HttpClient(discHttpHandler, false); 
      return client; 
     } 
    } 

dieses Problem zu beheben funktioniert gut und ich kann die Ziel-Service-URL auflösen. Es gibt jedoch eine neue Anforderung zur Unterstützung eines Host-Namens des Access-Gateways. Der aufgelösten URL sollte der DNS-Name des Access-Gateways wie http://GatewayUrl/CustomerService/api/v1/customers vorangestellt werden. Ich weiß nicht, wie ich das in der Eureka-Konfiguration erreichen soll. Ich habe versucht, den Hostnamen in eureka: instance-Konfiguration wie in http://steeltoe.io/docs/steeltoe-discovery/ erwähnt, aber am Ende wurde die gleiche URL gelöst wie zuvor. Irgendwelche Gedanken dazu. Danke im Voraus.

Antwort

0

Um Ihren Service mit einem nicht automatisch konfigurierten Hostnamen zu registrieren, legen Sie den Host-Namen in eureka:instance:hostName UND gesetzt eureka:instance:registrationMethod-hostname

Verwandte Themen