Size: a a a

Spring Framework and more

2020 July 02

NV

Natallia Vasilyeva in Spring Framework and more
Всем спасибо. Код скоро вышлю сюда
источник

AE

Alexandr Emelyanov in Spring Framework and more
Natallia Vasilyeva
Да, много запросов на получение информации. Метод addCallback, ошиблась (( он обрабатывает ответ и имеет 2 метода onSuccess (я тут сетаю полученный ответ в deferredResult), а onFailure обрабатывает ошибки если они возникают во время запроса - обычно тоже сетается ответ в deferredResult. А мне нужно отправить запрос ещё раз (((

Но как проверить http статус я не знаю ((
Когда много запросов фьючи не помогут, лишь переложите нагрузку с одного пула потоков в другой. Тут уже нужна реактивщина, webflux
источник

AE

Alexandr Emelyanov in Spring Framework and more
@VasilechekBel если интересно почему так, то советую посмотреть вот этот доклад https://youtu.be/tjp8pTOyiWg
YouTube
Максим Гореликов — Дизайн реактивной системы на Spring 5/Reactor
Доля мобильных клиентов растет, динамика нагрузки в разное время на один и тот же сервис становится непредсказуемой. Очередной «хабраэффект» может положить ваш продакшн, и вы даже не успеете его масштабировать. Конечный потребитель хочет видеть отзывчивое приложение или сайт, которые не тормозят, даже при большой нагрузке и медленных источниках данных. В тот момент, когда вы оптимизировали все, что можете, а проблемы остались, стоит посмотреть на reactive streams и сопутствующую экосистему. Выходит очередная версия Spring, в нем добавилось много всего для того, чтобы удобно и привычно (за счет множества аннотаций :slightly_smiling_face: ) создавать реактивные микросервисы. Посмотрим, как интегрировали Project Reactor в Spring 5 и что это может дать обычному разработчику. Возьмем простую синхронную систему из нескольких сервисов и БД, будем по шагам решать ее проблемы с помощью реактивных подходов. Попробуем разобраться, как все это стыкуется и как используются потоки в различных ситуациях. Интересно будет всем…
источник

М

Михаил in Spring Framework and more
Да, к слову deprecated над AsyncRestTemplate с указанием на реактивный WebClient намекает)
источник

NV

Natallia Vasilyeva in Spring Framework and more
Спасибо за информацию! Обязательно посмотрю!)
источник

AE

Alexandr Emelyanov in Spring Framework and more
Natallia Vasilyeva
Спасибо за информацию! Обязательно посмотрю!)
Если интересно, то можно пойти на котлин и корутины https://youtu.be/VPGPS3tr9sI
YouTube
Александр Емельянов. Spring 5. Построение реактивных систем на Kotlin
Ссылка на слайды: https://docs.google.com/presentation/d/1bcqOMHLykEPOTfAUx6Aalxf_HNb4CObOyogYUQOwb-Y/edit?usp=drivesdk

Ссылка на репозиторий: https://github.com/lex-em/reactive_services
---
Тезисы доклада:
Производительность и пропускная способность вычислительных систем всегда выступает краеугольным камнем при построоении приложений.

Сколько запросов сможет выдержать ваша система? Сколько пользователей смогут беспроблемно пользоваться ресурсом? Оба вопроса всегда волнуют как архитекторов/лидов, так и заказчика.

В докладе мы сравним классический подход и реактивный, а так же узнаем как нам поможет в этом Kotlin.

---
Цель встреч — появление в Челябинске профессионального Java сообщества, для обмена знаниями и опытом, интересного как опытным разработчикам, так и новичкам в индустрии.

Встречи анонсируются на TimePad: https://zaycevnet.timepad.ru/events/
Группа Vk: https://vk.com/java_chel
Доклады обсуждаются в чате: https://t.me/Java_Chel

По любым вопросам можно обращаться:
Николай Маруженко
n.maruzhenko@zaycev.net…
источник

NV

Natallia Vasilyeva in Spring Framework and more
Это все хорошо )) но у меня 4 спринг ((( на работе дали тикет, который никто сделать не смог, сказали пробуй ) вот все перечитала, перегуглила -  нашла, что многие хотят ретрай метод для асинков сделать, но как никто не знает (((
источник

АC

Алексей C in Spring Framework and more
Natallia Vasilyeva
Всем привет. Помогите, плиз, новичку. Есть такой код
ListenableFuture<ResponseEntity<String>> future=asyncRestTemplate.exchange(uri, method,...).

Потом я делаю future.addCallable(callable).

Как можно переопределить метод onFailure, чтобы в случае 503 ошибки запрос отправлялся заново? Что-то типа ретрай метода нужно сделать.

Я весь Гугл перерыла и ничего не нашла ((( Для restTemplate такой механизм поставляется apach, а для асинков нет  ничего похожего ((((
что за механизм apache для restTemplate?
источник

A

Anton in Spring Framework and more
Natallia Vasilyeva
Это все хорошо )) но у меня 4 спринг ((( на работе дали тикет, который никто сделать не смог, сказали пробуй ) вот все перечитала, перегуглила -  нашла, что многие хотят ретрай метод для асинков сделать, но как никто не знает (((
Spring Retry не подойдет? или его исходники
источник

A

Anton in Spring Framework and more
Natallia Vasilyeva
Это все хорошо )) но у меня 4 спринг ((( на работе дали тикет, который никто сделать не смог, сказали пробуй ) вот все перечитала, перегуглила -  нашла, что многие хотят ретрай метод для асинков сделать, но как никто не знает (((
Кто знает, как, те RSocket'ы пишут)
источник

NV

Natallia Vasilyeva in Spring Framework and more
Алексей C
что за механизм apache для restTemplate?
@Bean
public ClientHttpRequestFactory clientFactory() {
   HttpClient httpClient = HttpClients.custom()            
       .setRetryHandler((exception, executionCount, context) -> {
           if (executionCount > 3) {
               log.warn("Maximum retries {} reached", 3);
               return false;
           }
           if (<some condition for retry>) {
               log.warn("Retry {}", executionCount);
               return true;
           }
           return false;
       })
       .build();

   return new HttpComponentsClientHttpRequestFactory(httpClient);
}
@Bean
public RestTemplate customRestTemplate(@Qualifier("clientFactory") ClientHttpRequestFactory clientFactory){
   return new RestTemplate(clientFactory);
}
источник

RS

Ruslan Stelmachenko in Spring Framework and more
Natallia Vasilyeva
А как проверить код ошибки, может знаете? Проверить тип ошибки я могу, через instanceOf, а статус нет (
Там же приходит RestClientResponseException скорее всего? Если да, то у него есть метод getRawStatusCode().
источник
2020 July 03

АC

Алексей C in Spring Framework and more
Anton
Кто знает, как, те RSocket'ы пишут)
retry добавили в HttpAsyncClient 5.0 (org.apache.hc.client5.http.impl.async), но в HttpComponentsAsyncClientHttpRequestFactory ссылка на CloseableHttpAsyncClient старого проекта (org.apache.http.impl.nio.client.CloseableHttpAsyncClient). Можно класс AsyncRestTemplate скопировать и переписать.
источник

NV

Natallia Vasilyeva in Spring Framework and more
Должен приходить этот эксепшн, но не приходит (( Выбрасывается IOException
источник

NV

Natallia Vasilyeva in Spring Framework and more
Алексей C
retry добавили в HttpAsyncClient 5.0 (org.apache.hc.client5.http.impl.async), но в HttpComponentsAsyncClientHttpRequestFactory ссылка на CloseableHttpAsyncClient старого проекта (org.apache.http.impl.nio.client.CloseableHttpAsyncClient). Можно класс AsyncRestTemplate скопировать и переписать.
Спасибо! Буду изучать
источник

A

Anton in Spring Framework and more
Алексей C
retry добавили в HttpAsyncClient 5.0 (org.apache.hc.client5.http.impl.async), но в HttpComponentsAsyncClientHttpRequestFactory ссылка на CloseableHttpAsyncClient старого проекта (org.apache.http.impl.nio.client.CloseableHttpAsyncClient). Можно класс AsyncRestTemplate скопировать и переписать.
Спасибо! Многое за год с 5 betta изменилось, как раз нужно было похожее. Но обошлись persistance in HTTP/1.1.
источник

АC

Алексей C in Spring Framework and more
Anton
Спасибо! Многое за год с 5 betta изменилось, как раз нужно было похожее. Но обошлись persistance in HTTP/1.1.
что значит обошлись?
источник

A

Anton in Spring Framework and more
Алексей C
что значит обошлись?
Там проще было, нагрузка точка-точка,  а отправляются сторона по логике часто повторялась, соединения висели без ответа и что-то там еще удерживала. HTTP/2  из всех апачей был только для HttpCore 5.0 beta, но до retry толком не докопали, если он и был.
Так что год назад в той соытине перешли на 4.1 persistsnce, сейчас не знаю.
источник

АC

Алексей C in Spring Framework and more
Anton
Там проще было, нагрузка точка-точка,  а отправляются сторона по логике часто повторялась, соединения висели без ответа и что-то там еще удерживала. HTTP/2  из всех апачей был только для HttpCore 5.0 beta, но до retry толком не докопали, если он и был.
Так что год назад в той соытине перешли на 4.1 persistsnce, сейчас не знаю.
в смысле бело?
источник

U

Unknown in Spring Framework and more
Добрый день! как отключить кеширование Sequence при
@GeneratedValue(strategy = GenerationType.IDENTITY)
источник