Size: a a a

2021 January 14

AE

Alexandr Emelyanov in pro.jvm
Max Olsson
Хм, ошибка решается подключением tools.jar из папки с jdk.
tools.jar можно тянуть зависимостью с мавена
источник

ВЛ

Віталій Лабусюк... in pro.jvm
Здравствуйте, существует три микросервиса (A, B, C)
Сервис А - выступает в роли источника информации "а"
Сервис Б - берет пачками информацию с сервиса А, и конвертирует их в вид "б"
Сервису C нужно получить всю информацию сервиса А, в конвертиророваном виде через сервис Б.
Вопрос какие рекомендации, использование каких технологий поможет мне гарантировано(в случае ошибки, повторно запросить пачку) получить все "пачки". Думаю распараллелить запросы, на эти пачки для ускорения времени обработки тоже отличная идея но нужно гарантировать что они точно будут получены
Объем последовательной обработки информации занимаем достаточно много времени, по этому я желаю распараллелить запросы на получения с сервиса Б
источник

ВЛ

Віталій Лабусюк... in pro.jvm
Я думал использовать брокер сообщений, будто это разрешит мне безопасно ускорить процес
источник

E

Evgeniy ♎️ in pro.jvm
Віталій Лабусюк
Здравствуйте, существует три микросервиса (A, B, C)
Сервис А - выступает в роли источника информации "а"
Сервис Б - берет пачками информацию с сервиса А, и конвертирует их в вид "б"
Сервису C нужно получить всю информацию сервиса А, в конвертиророваном виде через сервис Б.
Вопрос какие рекомендации, использование каких технологий поможет мне гарантировано(в случае ошибки, повторно запросить пачку) получить все "пачки". Думаю распараллелить запросы, на эти пачки для ускорения времени обработки тоже отличная идея но нужно гарантировать что они точно будут получены
Объем последовательной обработки информации занимаем достаточно много времени, по этому я желаю распараллелить запросы на получения с сервиса Б
а не проще сервис А научить выдавать всё так как надо сервису С ?
чтоб не городить очередь сообщений, придумывать какие-то обходные пути и тд
источник

NG

Nikita Gryzlov in pro.jvm
Віталій Лабусюк
Здравствуйте, существует три микросервиса (A, B, C)
Сервис А - выступает в роли источника информации "а"
Сервис Б - берет пачками информацию с сервиса А, и конвертирует их в вид "б"
Сервису C нужно получить всю информацию сервиса А, в конвертиророваном виде через сервис Б.
Вопрос какие рекомендации, использование каких технологий поможет мне гарантировано(в случае ошибки, повторно запросить пачку) получить все "пачки". Думаю распараллелить запросы, на эти пачки для ускорения времени обработки тоже отличная идея но нужно гарантировать что они точно будут получены
Объем последовательной обработки информации занимаем достаточно много времени, по этому я желаю распараллелить запросы на получения с сервиса Б
звучит как типичная задача для систем класса ESB. источники, потребители, между ними - очереди и трансформация
источник

NG

Nikita Gryzlov in pro.jvm
можно попробовать построить какое-то решение поверх кафки (для возможности перечитывания сообщений), можно взять что-то готовое
источник

NB

Nikita Bezverkhy in pro.jvm
Nikita Gryzlov
по поводу разницы во flame graph:

2.3.5:
https://i.postimg.cc/J4BXCtVN/image.png

2.4.1:
https://i.postimg.cc/SsN9BrkR/image.png

на лицо постоянный cache miss в https://github.com/spring-projects/spring-framework/blob/3113917c553197fc5e25282b02c6dcc504e46dca/spring-context/src/main/java/org/springframework/context/annotation/CommonAnnotationBeanPostProcessor.java#L340

осталось разобраться, почему в 2.3.5 вообще ни одного построения метаданных, а в 2.4.1 - на каждый бин... ох, отлаживать кишочки спринга, мое любимое прям -_-
стало лень искать, нашёл в чём беда?
а то я собираюсь на днях повышать с 2.3.5 на 2.4.2)
источник

NG

Nikita Gryzlov in pro.jvm
Nikita Bezverkhy
стало лень искать, нашёл в чём беда?
а то я собираюсь на днях повышать с 2.3.5 на 2.4.2)
да, нашел. коротко - нельзя вешать @Bean над методом, у которого внутри используется applicationContext.getBean.
обсуждение:
https://github.com/spring-projects/spring-framework/issues/26369
источник

NB

Nikita Bezverkhy in pro.jvm
Nikita Gryzlov
да, нашел. коротко - нельзя вешать @Bean над методом, у которого внутри используется applicationContext.getBean.
обсуждение:
https://github.com/spring-projects/spring-framework/issues/26369
спасибо👍
источник

NG

Nikita Gryzlov in pro.jvm
Nikita Bezverkhy
спасибо👍
можешь попробовать сначала смигрироваться на 2.3.7. если не заметишь деградации, значит, конкретно эта проблема не стрельнула.
источник

NB

Nikita Bezverkhy in pro.jvm
Nikita Gryzlov
можешь попробовать сначала смигрироваться на 2.3.7. если не заметишь деградации, значит, конкретно эта проблема не стрельнула.
да не, по идее у меня вообще нет прототайпов да и бинов в таком кол-ве, так что должно всё гладко пройти
предварительно миграция на 2.4.1 на локали прошла гладко)
источник

NB

Nikita Bezverkhy in pro.jvm
это я для инфы поинтересовался, вдруг пригодится когда-нибудь
источник

AE

Alexandr Emelyanov in pro.jvm
Nikita Gryzlov
да, нашел. коротко - нельзя вешать @Bean над методом, у которого внутри используется applicationContext.getBean.
обсуждение:
https://github.com/spring-projects/spring-framework/issues/26369
дергать applicationContext.getBean в принципе не очень хорошо
источник

AE

Alexandr Emelyanov in pro.jvm
тем более в конфигурации
источник

NG

Nikita Gryzlov in pro.jvm
Alexandr Emelyanov
дергать applicationContext.getBean в принципе не очень хорошо
обычно да. но у меня сложная логика выбора, бины каких типов нужно инстанцировать. обвешиваться тоннами кондишеналами - только размазывать эту логику и терять производительность. эта "конфигурация" по сути является обжект провайдером и просто отвечает за инстанцирование бина нужного типа. выбор типа же находится в другом месте.
источник

RG

Roman Gritsko in pro.jvm
Всем привет!
Какие есть подходы для тестирования, когда в теле тестируемого метода вызываются публичные методы, которые принимают в качестве параметра функции, в которых есть некоторое количество логики?
Вопрос в том как протестировать эту логику.
Пока вижу два варианта -
1. Вынести эту логику в публичный метод какого-то сервиса и тестить ее отдельно.
2. Использовать  ArgumentCaptor<ExampleSomeConsumer<SomeClass>> и после уже получать из него переданную функцию и тестировать ее. Но этот вариант "попахивает", на мой взгляд
источник

z

zafar in pro.jvm
Roman Gritsko
Всем привет!
Какие есть подходы для тестирования, когда в теле тестируемого метода вызываются публичные методы, которые принимают в качестве параметра функции, в которых есть некоторое количество логики?
Вопрос в том как протестировать эту логику.
Пока вижу два варианта -
1. Вынести эту логику в публичный метод какого-то сервиса и тестить ее отдельно.
2. Использовать  ArgumentCaptor<ExampleSomeConsumer<SomeClass>> и после уже получать из него переданную функцию и тестировать ее. Но этот вариант "попахивает", на мой взгляд
Привет! Тестируйте абстракции отдельно
источник

RG

Roman Gritsko in pro.jvm
вопрос возникнет скорее когда логики очень немного, условно пара if-else.
Выносить такое в отдельную абстракцию не кажется оптимальным решением
источник

z

zafar in pro.jvm
Чтобы не гадать, можете примерный код накидать?
источник

A

Aleksandr in pro.jvm
Не подскажите, а для кликхауса же есть проверенный реактивный клиент (webflux)?
источник