본문 바로가기

반응형

개발

(81)
Failed to validate connection com.mysql.cj.jdbc.ConnectionImpl@3900e5a6 (No operations allowed after connection closed.). Possibly consider using a shorter maxLifetime value. 원인 DB global wait_timeout 값(현재 28800s)과 어플리케이션에 설정한 maxLIfeTime 값과 달라서 발생 해결 1. DB global wait_timeout -> DBCP maxLIfeTime 에 맞추던지 2. DBCP maxLIfeTime -> DB global wait_timeout 에 맞추던지 두 가지 방법이 있음. hikari 에서는 dba 의견을 따라서 DBCP maxLIfeTime을 DB global wait_timeout 에 맞추는걸 권장함. hikari 개발자가 남긴 maxLifetime 의 동작 -> maxLifetime is supported by an individual timer task per-connection. 30 초마다 돌아서 hikari 공식 문..
layerd jar가 필요한 이유와 적용방법 - docker build 속도개선 - 일반적으로 spring boot로 docker image를 만들때 다음과 같이 dockerFile 을 작성한다. FROM openjdk:8-jdk-alpine EXPOSE 8080 ARG JAR_FILE=target/demo-app-1.0.0.jar ADD ${JAR_FILE} app.jar ENTRYPOINT ["java","-jar","/app.jar"] - Docker 이미지는 레이어로 빌드된다. - 도커는 효과적인 배포를 위해서 레이어별로 캐시를 해서, 변경이 없는 레이어에 대해서는 다시 pull/push를 하지 않는다. - Spring Boot fat jar의 특성은 모든 애플리케이션 코드와 3rd party 라이브러리가 single layer에 배치되는 것 이다. - 그 영향으로 한 줄의 ..
spring cloud stream 적용기 진행되는 프로젝트는 boot 1.5.X org.springframework.cloud:spring-cloud-starter-stream-rabbit 최신버전으로 하니 에러 발생 했다. ConfigurableCompositeMessageConverter 가 없어서 발생했는데 https://stackoverflow.com/questions/46473045/spring-boot-spring-cloud-stream-kafka-implementation The org.springframework.integration.support.converter.ConfigurableCompositeMessageConverter is from Spring Integration 5.0: 보면 ConfigurableComposit..
HTTP 완벽 가이드 - http 메시지 HTTP 메시지 메시지의 흐름 메시지의 흐름은 인바운드, 아웃바운드, 용어를 트랜젝션 방향을 표현하기 위해 사용한다. 인바운드 : 메시지가 서버로 향하는 것 아웃 바운드 : 모든 처리가 끝난 뒤에 메시지가 사용자 에이전트로 돌아오는 것 HTTP 메시지는 요청 메시지냐 응답 메시지냐에 관계없이 모든 메시지는 다운스트림으로 흐른다. 메시지의 각 부분 HTTP는 데이터의 구조화된 블록인다. 메시지는 요청 메시지와 응답 메시지로 분류된다. 요청 메시지 형식 메서드 - 클라이언트 측에서 서버가 리소스에 대해 수행해주길 바라는 동작 요청 URL - 완전한 URL 또는 URI의 경로 구성요소다. 버젼 - HTTP/. 모두 정수이다. 응답 메시지 형식 상태 코드 - 요청 중에 무엇이 일어났는지 설명하는 세 자리의 숫자..
http 완벽 가이드 - URL 과 리소스 URL 과 리소스 HTTP란 http는 신뢰성 있는 데이터 전송 프로토콜을 사용해서 데이터 전송 중 손상되거나 꼬이지 않음을 보장 웹 클라이언트와 서버와 리소스 웹 서버는 인터넷의 데이터를 저장하고, HTTP 클라이언트가 요청한 데이터를 제공한다. 웹 서버는 웹 리소스를 관리하고 제공한다. 리소스는 정적 일 수도 있고, 요청에따라 콘텐츠를 생산하는 프로그램이 될 수도 있다. 인터넷은 수천 가지의 데이터 타입을 다루기 때문에 MINE 타입이라는 데이터 포맷 라벨을 붙인다. 모든 객체 데이터에 MIME 타입을 붙인다. 서버의 리소스 이름은 URI로 불린다. 우편물 주소 같은 것으로, 정보리소스를 고유하게 식별하고 위치를 지정할 수 있다. URL은 특정 서버의 한 리소스에 대한 구체적인 위치를 서술한다. 오늘..
AMQP 프로토콜의 메시지 소비 과정 AMQP 프로토콜 사용하기 메시지를 발행을 실제로 실행하기 전에 다음과 같은 설정 단계를 거친다. Connection negotiation 과정 익스체인지 선언하기 큐 선언하기 큐와 익스체인지 연결하기 RabbitMQ에 메시지 발행하기 RabbitMQ에 메시지 소비하기 1. 클라이언트와 RabbitMq가 통신할때 형식을 정의하는 Connection negotiation 과정 클라이언트 라이브러리는 amqp 프로토콜의 복잡한 통신 절차를 숨기고 있다 라이브러리는 이런 동작을 신경쓰지 않을 수 있다는 것에 장점이 있다 rabbitmq와 첫번째 연결을 맺기 위해 클라이언트가 취해야 하는 단계를 알아보자. rabbitmq는 코어서버와 통신하는 모든 부분에서 RPC(remote procedure call) 패턴으..
rabbitMq Exchange 라우팅 패턴 Exchange 라우팅 패턴 RabbitMQ 최대 강점은 애플리케이션이 제공한 라우팅 정보를 기반으로 서로 다른 큐로 유연하게 라우팅 가능 RabbitMQ의 4가지 기본 유형의 익스체인지와 유형을 알아본다. Direct Exchange Fanout Exchange Topic Exchange Headers Exchange Direct Exchange 다이렉트 익스체인지는 라우팅 키를 기반으로 메시지를 큐에 전달한다. 특정 큐에 메시지를 하나씩 전달한다. RabbitMq에 기본으로 내장돼 있어서 추가 플러그인이 필요하지 않다.(매우 단순함) direct exchange 는 unicast routing 방식에 적합하다.. 여기서 unicast routing 이란.... 고유 주소로 식별된 하나의 네트워크 목적..
AMQ 모델과 Exchange, Queue, Binding 에 대해 * rabbitmq 강점과 유연성은 amqp 스펙에서 나온다. - rabbitmq를 설명하기 앞서 amqp가 무엇인지 부터 알아보자. amqp (advanced message queuing protocol) - 메시징 프로토콜!!!! - amqp 스펙은 여러가지가 있는데 rabbitmq는 0-8, 0-9-1과 밀접하게 관련돼 있다. - rabbitmq는 amqp 스펙을 구현했는데, 주요 아케텍쳐와 통신 방식이 핵심이다. AMQP 스펙은 HTTP 프로토콜과 달리 네트워크 프로토콜의 정의뿐 아니라 서버 측 서비스와 동작 방식도 정의한다. AMQ 모델은 메시지 라우팅 동작을 정의 하는 메시지 브로커의 세 가지 추상 컴포넌트를 다음과 같이 정의한다. * 익스체인지 : 메시지 브로커에서 큐에 메시지를 전달하는 컴..

반응형