전체 글
-
spring netty thread sleep, webflux 에서 sleep 어떻게 하는게 나을까Spring/spring boot 및 기타 2023. 6. 14. 12:12
webflux 를 사용하면 spring boot 내장서버가 tomcat 에서 netty 로 사용해야 하는데, netty 가 비동기에 유리한 서버이다 보니, sleep 을 주고 싶은 로직이 있을 떄 sleep 을 주기가 비효율적이다 Spring Netty를 사용할 때 Thread.sleep()를 사용하여 지정된 시간 동안 스레드 실행을 일시 중지 할 수 있다 . 하지만 이벤트 루프를 차단하고 성능 문제를 일으킬 수 있으므로 Netty 애플리케이션에서 와 같은 차단 작업을 사용하는 것은 일반적으로 권장되지 않는다 . 대신 Netty는 패키지 에서 사용할 수 있는 ScheduledExecutorService를 사용하여 작업 지연을 위한 비동기 대안을 제공한다 io.netty.util. schedule()의 방..
-
spring @ControllerAdvice, @ExceptionHandler 예외처리 방법Spring/Annotation 2023. 6. 8. 18:02
@ExceptionHandler @ExceptionHandler 는 @Controller , @RestController 가 적용된 Bean 에서 발생하는 예외를 잡아서 하나의 메서드에서 처리해주는 기능이다. @ExceptionHandler 에 설정한 예외가 발생하면 handler가 실행된다. @RestController public class MyRestController { ... ... @ExceptionHandler(NullPointerException.class) public Object nullex(Exception e) { System.err.println(e.getClass()); return "myService"; } } 위와 같이 적용하기만 하면 된다. @ExceptionHandler라..
-
스프링 코딩 공작소 책 리뷰책정리 2023. 4. 9. 23:29
1. 왜 이 책을 선택하였나? 현업 7년차 개발자로 스프링 및 개발에 처음 입문하는 누군가에게 추천해줄 책을 찾고 있었다. 그러던 중 이 책이 예제를 통해 간단하게 스프링 입문하기 좋다는 느낌을 받았다. 일단 예제소스의 복잡도가 깊지 않고 간결해서 좋다. 또한 1,2 장을 통하여 스프링에 처음 입문하는 사람들이 세팅할 수 있게 정리가 되어 있다. 그 이후의 장들은 간단하게 쇼핑몰을 구축해가면서 한단계씩 순차적으로 스프링에서 제공하는 많은 기능을 자유롭게 확장해 사용할 수 있으며 영역별로 개발할 수 있다는 장점이 있다. 또한, MultipartFile, RESTful 웹 서비스, 스프링 웹 플로우, 스프링 시큐리티, Log4j 등을 사용하기 때문에 다양한 스프링 기능도 함께 익힐 수 있다. 책을 따라 실습..
-
[스프링] @Retryable - 특정오류시 재시도Spring/Annotation 2023. 3. 29. 11:53
특정 Exception이 발생했을 경우 일정 횟수만큼 재시도할 수 있는 어노테이션이다. 예를 들어, 서비스 내에서 다른 서비스에 있는 API를 호출할 때 간헐적으로 통신 오류가 발생할 수 있다. 이럴 때 특정메소드에 재시도 할 수 있는 기능이 있다. 사용법은 아주 간단하다. 1. Spring Application에 @EnableRetry 어노테이션 추가 2. 재시도 하고 싶은 메소드에 @Retryable 어노테이션 추가 - include : 여기에 설정된 특정 Exception이 발생했을 경우 retry한다. - exclude : 설정된 Exception 재시도 제외 - maxAttempts : 최대 재시도 횟수 (기본 3회) - backoff : 재시도 pause 시간 @Retryable(maxAtte..
-
spring boot 3.0 추가되는 점(spring 6)Spring/spring boot 및 기타 2023. 1. 10. 18:58
Spring Boot 2.x -> 3.0 차이 최소 요구사항 변경 (M4 기준) Gradle 7.5 Groovy 4.0 Jakarta EE 9 Java 17 Kotlin 1.6 Hibernate 6.1 Spring Framework 6 AOT maven, gradle 플러그인 제공 native 지원 기능 확대 spring 3.0 지원 라이브러리 Spring AMQP 3.0. Spring Batch 5.0. Spring Data 2022.0. Spring GraphQL 1.1. Spring HATEOAS 2.0. Spring Integration 6.0. Spring Kafka 3.0. Spring LDAP 3.0. Spring REST Docs 3.0. Spring Retry 2.0. Spring Se..
-
[KAFKA] CommitFailedExceptionDB/Kafka 2022. 12. 28. 16:10
카프카 오류 Synchronous auto-commit of offsets {topic-2=OffsetAndMetadata{offset=96, leaderEpoch=0, metadata=''}} failed: Offset commit cannot be completed since the consumer is not part of an active group for auto partition assignment; it is likely that the consumer was kicked out of the group. 위와 같은 오류가 발생해서 찾아보니 다음과 같다. Kafka에서 CommitFailedException이 나오는 유형은 아래와 같다. consumer 로직의 처리시간이 max.poll.int..
-
[ELK] logstash filter grok 사용DB/Elasticsearch 2022. 12. 18. 22:36
https://logz.io/blog/logstash-grok/ A Beginner’s Guide to Logstash Grok | Logz.io Logstash Grok plays a crucial part in the logging pipeline. Here's how to get started and construct filters for Syslog, Apache, and Elasticsearch. logz.io https://www.elastic.co/kr/blog/a-practical-introduction-to-logstash A Practical Introduction to Logstash Elastic Stack은 가능한 한 쉽게 Elasticsearch에 데이터를 수집할 수 있도록 해 ..
-
[책 리뷰] 도커 교과서 (설치부터 실전 운영 투입까지, 한 권에 담았다!)책정리 2022. 12. 17. 15:58
도커를 실무에서 사용하고 있어서 책을 통해서 더 배울게 있나 했는데, 도커교과서 라는 교재를 보니 아직 알아야 할게 너무 많은 걸 알았다. 요즘 도커를 안쓰고 개발을 하기가 어렵다. 실무에서 쓰지 않는다고 하더라도 도커는 알아야 외부 개발자와의 간단한 미팅에서라도 무시당하지 않는다. 개발자 친구가 도커를 전혀 모른다고 하면 내심 무시당할 수 있다. 자세히는 모르더라도 도커가 뭔지는 알아야 한다. 또한 요즘 쿠버네티스 또한 안하는 회사를 점차 찾기 힘들어졌다. 이런 쿠버네티스를 도입하려면 도커는 정말 필수적으로 알아야 하는 기본 지식이 되어버렸다. 이 책을 보면 도커를 처음 시작하는 사람부터 실습가능하게 설명이 되어 있다. 도커의 기본적인 사용법부터 Dockerfile 로 도커이미지 생성하는 내용을 통해 ..