spring-cloud mit ribbon / eureka / hystrix using restTemplate kann keine Zeitüberschreitungen für das Verbinden / Lesen festlegen
Ich habe eine Spring-Boot-Anwendung mit Spring-Cloud erstellt und möchte RestTemplate in meiner Client-Anwendung (die auch ein Microservice ist) verwenden, damit ich mockMvc weiterhin für Integrationstests verwenden kann. Ich verwende das standardmäßige Ribbon / Eureka / Hystrix-Client-Setup mit meinem Client-Microservice und meinem Eureka-Client innerhalb des Dienstes, den ich anrufe. Dies funktioniert (nachdem ich herausgefunden habe, dass Service-IDs einen Service-Endpunkt in restTemplate identifizieren). Mein Problem ist, dass ich anscheinend weder das restTemplate-Lese- noch das Verbindungszeitlimit von 300 ms ändern kann.
Details zum Anruf:
`@Configuration
@EnableAutoConfiguration
@ComponentScan
@EnableConfigurationProperties
@EnableHystrix
@EnableEurekaClient
public class Application { ... public static void main(String[] args) {} ... }
@Component
class EricComponentToDoHystrix { // apparently this has to be a component for hystrix to work btw
@Autowired
RestTemplate restTemplate;
..
@HystrixCommand(fallbackMethod="defaultRestTemplateCall")
public void doRestTemplateCall()
ResponseEntity<String> result = restTemplate.getForEntity("http://someservice/doSomething", String.class); // actually make a call
..
}
}`
mit einer application.properties, die enthält:
spring:
cloud:
client:
serviceIds:
- someservice
someservice:
ribbon:
#listOfServers: localhost:7080
#NIWSServerListClassName: com.netflix.niws.loadbalancer.DiscoveryEnabledNIWSServerList
# the eureka vipAddress of the target service (Disabled)
DeploymentContextBasedVipAddresses: someservice
# Interval to refresh the server list from the source
ServerListRefreshInterval: 1000
# Connect timeout used by Apache HttpClient.. apparently not by restTemplate
ConnectTimeout: 30000
# Read timeout used by Apache HttpClient.. apparently not by restTemplate
ReadTimeout: 30000
eureka:
client:
#Region where eureka is deployed -For AWS specify one of the AWS regions, for other datacenters specify a arbitrary string
#indicating the region.This is normally specified as a -D option (eg) -Deureka.region=us-east-1
region: default
#For eureka clients running in eureka server, it needs to connect to servers in other zones
preferSameZone: false
us-east-1:
availabilityZones: default
instance:
#Virtual host name by which the clients identifies this service
virtualHostName: ${spring.application.name}
appGroupName: ericGroup
# disable Ribbon's cicruit breaker and rely soley on Hystrix.
# this helps to avoid confusion.
# see https://github.com/Netflix/ribbon/issues/15
niws:
loadbalancer:
availabilityFilteringRule:
filterCircuitTripped: false
Weiß jemand, welche Eigenschaften ich brauche, um die Standard-Timeouts von restTemplate zu ändern? Die Dokumentation zu diesem Thema ist sehr leicht und es scheint, dass der Code erst kürzlich sogar die Verwendung von restTemplate gegen die Standardeinstellungen von Ribbon / Eureka-Springboots erlaubt hat. Vielleicht wurde das noch nicht gebaut.