728x90

2022/04 4

Spring-Cloud-Sleuth 비동기 요청시 서버간 TraceId 보존하는 방법

방법을 찾게 된 계기 Java 나 Kotlin 에서는 ThreadLocal 을 이용가능하다. 주로 Logback 의 MDC 에서도 이 ThreadLocal 을 이용해서 하나의 스레드내에서 동작하는 특정 값을 로깅하기 위해 이용한다. Slueth 또한 MDC 를 이용하는데 MDC 에 traceId 와 spanId 를 저장한다. traceId 를 어떻게 Thread 에서만이 아닌 서로 다른 서버에서도 똑같은 값으로 주어 좀 더 흐름을 찾기 쉽게 만들까? 라는 고민을 하다가 아래와 같이 삽질을 하게 되었다. 예시 백문이 불여일타라고 예시코드로 시작해보자. 일단 ThreadPoolTaskExecutor 를 테스트를 위해서 대충 만들어보자. 이제 Async 에서는 위의 ThreadPoolTaskExecutor 를..

Spring 2022.04.27

오늘자 삽질 - Spring Kafka

회사에서 Spring Kafka 를 연동하던 중에 Local 에서 콘솔로 Topic 에 직접 Message 를 쏘니 잘 안되는 상황이 발생했다. 그래서 처음에는 아 key-serializer 와 value-serializer 가 잘못 설정되어 있나? 라는 생각을 했다. 사실 내가 짠 코드가 아니여서 코드를 디버깅 좀 해보다가 처음에는 KafkaRecord 에 자꾸 코드에서 DeserializerException 을 넣길래 아니 이게 key-value deserializer 가 잘못되어 있는거 아니야? 하고 빼고 하니깐 Default Serializer 인 StringDeserializer 로 값이 넘어와서 잘 보였다. 하지만 Object 로 Mapping 되지 않았다. 그래서 궁금해서 ErrorHandl..

Spring 2022.04.13

Spring Web Flux 에 대해

어제 Block, NonBlock, Sync, Async 에 대해서 정리했는데 참고하려면 아래글을 읽으면 좋을 것 같다 http://roach-wiki.com/doku.php?id=block block [Roach'Wiki] roach-wiki.com 생각해보니 요즘 컴퓨팅 환경을 생각했을때 Spring WebFlux 성능이 진짜 좋을 수 밖에 없지 않나? 라는 생각이 들었다. 사실 그래서 예전에 공부하려다만 Spring Reactor 에 대해서 공부해보려고 한다. 들어오자마자 WebClient 가 나왔는데.. 나중에 Feign, WebClient(Reactor), RestTemplate 성능 테스트를 한번 해봐야겠다. 17일부터 동규님이 NextStep 에서 진행하는 인프라 공방도 수강하니까.. 그거 ..

끄적 2022.04.08

기존에 있던 Object 를 Bean 으로 등록하는 방법

Spring Bean 은 MetaData 정보를 가지고 저장되는데 해당 정보를 나타내는 클래스는 BeanDefinition 이다. 가지고 있는 MetaData 정보는 아래와 같다. - package-qualified Class Name - IoC Container 내에서의 Spring Bean 동작 요소 (LifeCycle, Scope, etc..) - 의존성을 지니고 있는 다른 Bean 과의 관계 - 새롭게 만들어질 Bean 에 적용될 Configuration 정보들 (Hibernate Connection Pool Size 과 같은 것들) 즉, IoC Container 에서 해당 Bean 을 어떻게 생성해야 할지 정보를 적어 놓는 것이다. 부가적으로 ApplicationContext 에서는 사용자가 생..

Spring 2022.04.05
728x90