Я пытаюсь использовать новые классы Reactive в Spring для проведения нагрузочного тестирования в конечной точке RESTful. Я все еще изучаю эти классы, поэтому, возможно, я иду в неправильном направлении, поэтому, пожалуйста, перенаправьте меня на более легкий путь, если вы знаете один ...
Вот что у меня есть. Это заводной код:
def token="xyz"
WebClient webClient=WebClient
.builder()
//Using google for example purposes only
.baseUrl("http://google.com")
//In the real code, there's a lot of extra headers like this one..
.defaultHeaders({ headers ->
headers.add(HttpHeaders.AUTHORIZATION,"bearer $token")
})
.build()
//This is where load is measured
for (int i:1..3) {
webClient
.method(HttpMethod.GET)
.header("x","y")
.attribute("i",i)
.retrieve()
.bodyToMono(String)
.subscribe {
body ->
println body
//Is there any way to get the "i" attribute here to determine the request???
}
}
sleep 30000
println "done"
Я вижу, как возвращаются три запроса, поэтому он работает. Теперь я хочу определить время ожидания между запросом и ответом для каждого из трех запросов. Если бы я мог получить атрибут «i», каждый цикл мог бы начинаться с сохранения текущего времени на карте, а затем метод подписки мог бы использовать «i» для чтения карты и сравнения ее с текущим временем для вычисления дельты.
Другой вариант, который я рассматриваю, - это создание нового WebClient для каждого запроса, но будет 1000 запросов, и я хочу оптимизировать производительность.
Кроме того, я не слишком рад тому, что в конце мне нужен оператор сна ...
Каков наилучший способ использования классов Reactive для нагрузочного тестирования службы RESTful?