负载均衡器不包含服务 API-GATEWAY 的实例
我正在开发 3 个 spring boot 应用程序,其中有 2 个应用程序用于在两个应用程序之间进行通信,我正在使用 feign 客户端,我也是 1 个 api-gateway 应用程序,其中包含不同应用程序的所有条目 feign 客户端控制器在
@Autowired
PaymentService paymentService;
@PostMapping(value = "/payments/{appointmentId}")
public String changePaymentStatus(@PathVariable(name = "appointmentId")String appointmentId){
paymentService.changePaymentStatus(appointmentId);
return "Done";
}
这里是 feign 客户端代码
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@FeignClient(name = "API-GATEWAY")
public interface AppointmentServiceClient {
@RequestMapping(value = "${appointmentApp.changePaymentStatus}",method = RequestMethod.POST)
public String changePaymentStatus(@PathVariable(name = "appointmentId")String appointmentId);
}
这里我使用了“API-GATEWAY”,因为有一个应用程序以这个名称运行,它的 application.yml 文件在这里
port: 9191
spring:
application:
name: API-GATEWAY
cloud:
gateway:
routes:
- id: DOCTOR-SERVICE
uri: lb://DOCTOR-SERVICE
predicates:
- Path=/doctor_app/**
- id: APPOINTMENT-SERVICE
uri: lb://APPOINTMENT-SERVICE
predicates:
- Path=/appointment_app/**
- id: USER-ON-BOARDING-SERVICE
uri: lb://USER-ON-BOARDING-SERVICE
predicates:
- Path=/user_app/**
- id: RATING-SERVICE
uri: lb://RATING-SERVICE
predicates:
- Path=/rating_app/**
- id: PAYMENT-SERVICE
uri: lb://PAYMENT-SERVICE
predicates:
- Path=/payment_app/**
discovery:
enabled: true
此外 AppointmentServiceClient 的 @RequestMapping 中的值具有 application.properties 作为这里显示
appointmentApp.address = http://APPOINTMENT-SERVICE
appointmentApp.changePaymentStatus = /appointment_app/v1/payments/{appointmentId}
这里我想使用 feign 客户端通过 api-gateway 调用约会服务
另外 feign 客户端尝试调用的控制器方法是
@PostMapping(value = "/v1/payments/{appointmentId}")
public String changePaymentStatus(@PathVariable(name = "appointmentId")String appointmentId){
appointmentService.changePaymentStatus(appointmentId);
return "done";
}
通过从邮递员做一个 POST 我得到feign.FeignException$ServiceUnavailable: [503] 在 [POST] 期间 [http://API-GATEWAY/appointment_app/v1/ payments/ndjkccbc7868] [AppointmentServiceClient#changePaymentStatus(String)]: [负载均衡器不包含服务API-网关]
I am working on 3 spring boot application from which 2 applications i am using for communication between the two i am using feign client also i am 1 application for api-gateway which has all the entries for diffrent application
feign client controller is
@Autowired
PaymentService paymentService;
@PostMapping(value = "/payments/{appointmentId}")
public String changePaymentStatus(@PathVariable(name = "appointmentId")String appointmentId){
paymentService.changePaymentStatus(appointmentId);
return "Done";
}
here is the feign client code
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@FeignClient(name = "API-GATEWAY")
public interface AppointmentServiceClient {
@RequestMapping(value = "${appointmentApp.changePaymentStatus}",method = RequestMethod.POST)
public String changePaymentStatus(@PathVariable(name = "appointmentId")String appointmentId);
}
Here i have used "API-GATEWAY" because the there is one application running with this name and its application.yml file is here
port: 9191
spring:
application:
name: API-GATEWAY
cloud:
gateway:
routes:
- id: DOCTOR-SERVICE
uri: lb://DOCTOR-SERVICE
predicates:
- Path=/doctor_app/**
- id: APPOINTMENT-SERVICE
uri: lb://APPOINTMENT-SERVICE
predicates:
- Path=/appointment_app/**
- id: USER-ON-BOARDING-SERVICE
uri: lb://USER-ON-BOARDING-SERVICE
predicates:
- Path=/user_app/**
- id: RATING-SERVICE
uri: lb://RATING-SERVICE
predicates:
- Path=/rating_app/**
- id: PAYMENT-SERVICE
uri: lb://PAYMENT-SERVICE
predicates:
- Path=/payment_app/**
discovery:
enabled: true
Also the value in @RequestMapping of AppointmentServiceClient has application.properties as shown here
appointmentApp.address = http://APPOINTMENT-SERVICE
appointmentApp.changePaymentStatus = /appointment_app/v1/payments/{appointmentId}
Here i am want to call APPOINTMENT-SERVICE through api-gateway using feign client
Also the controller method which the feign client is trying to call is
@PostMapping(value = "/v1/payments/{appointmentId}")
public String changePaymentStatus(@PathVariable(name = "appointmentId")String appointmentId){
appointmentService.changePaymentStatus(appointmentId);
return "done";
}
By doing a POST from postman i am getting feign.FeignException$ServiceUnavailable: [503] during [POST] to [http://API-GATEWAY/appointment_app/v1/payments/ndjkccbc7868] [AppointmentServiceClient#changePaymentStatus(String)]: [Load balancer does not contain an instance for the service API-GATEWAY]
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论