Я использую Spring Boot 2.0.3.RELEASE
и openFeign:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
Я объявил двух притворных клиентов в моем проекте:
@FeignClient(name = "appleReceiptSandboxFeignClient",
url = "https://sandbox.itunes.apple.com",
configuration = Conf.class)
@RequestMapping(produces = "application/json", consumes = "application/json")
public interface AppleReceiptSandboxFeignClient {
@RequestMapping(value = "/verifyReceipt", method = RequestMethod.POST)
AppleReceiptResponseDTO sandboxVerifyReceipt(@RequestBody AppleReceiptRequestDTO dto);
}
@FeignClient(name = "appleReceiptFeignClient",
url = "https://buy.itunes.apple.com")
@RequestMapping(produces = "application/json", consumes = "application/json")
public interface AppleReceiptFeignClient {
@RequestMapping(value = "/verifyReceipt", method = RequestMethod.POST)
AppleReceiptResponseDTO productionVerifyReceipt(@RequestBody AppleReceiptRequestDTO dto);
}
Моя проблема в том, что даже если базовые URL-адреса и имя не совпадают, кажется, что симулированные клиенты рассматриваются в коллизии.
java.lang.IllegalStateException: Ambiguous mapping. Cannot map 'com.myproject.central.client.AppleReceiptSandboxFeignClient' method
public abstract com.myproject.central.client.dto.AppleReceiptResponseDTO com.myproject.central.client.AppleReceiptSandboxFeignClient.sandboxVerifyReceipt(com.myproject.central.client.dto.AppleReceiptRequestDTO)
to {[/verifyReceipt],methods=[POST],consumes=[application/json],produces=[application/json]}: There is already 'com.myproject.central.client.AppleReceiptFeignClient' bean method
public abstract com.myproject.central.client.dto.AppleReceiptResponseDTO com.myproject.central.client.AppleReceiptFeignClient.productionVerifyReceipt(com.myproject.central.client.dto.AppleReceiptRequestDTO) mapped.
Даже если эта ошибка сопоставления является неожиданной, я открыт для обходных путей.
Я, очевидно, не могу объявить две конечные точки в одном симулированном клиенте, потому что субдомен отличается, или, может, я что-то упустил?
Мой вопрос таков: какой будет самый простой обходной путь (если есть) с использованием только симулированного клиента?