본문 바로가기

전체 글

(170)
[Java]spring-cloud-stream mqtt binder spring-cloud-stream 에서 mqtt binder 이용해본거 간단 메모. 구현 예는 조만간 정리해서 기록해보겠음 spring-cloud-stream 에 kafka 와 rabbitMQ binder 구현체는 제공되는데 mqtt binder 는 없어서 고민하다가 그나마 좀 간단한 spring integration 이용한 샘플이 있길래 참고해서 기능 구현은 했었다. 그런데, 뒷간 들어갈 때와 나올 때 사람 맘 달라진다고 막상 돌아가는거 보고 나니 기존 kafka 와 rabbitmq binder 이용해서 구현한 것과 일관성이 없는게 영 찜찜. https://github.com/sheunglaili/spring-cloud-stream-binder-mqtt 에 어떤 개인 개발자가 공개한 바인더 구현체가 ..
Uber 의 PostgreSQL -> MySQL 전환이라는 오래 된 기사 보고 MariaDB 에서 PostgreSQL 로 전환하는거 고민하던 참에 관련 문제 더 깊이 고민하고 있는 회사 엔지니어 분에게 참조하시라고 보냈던 멜 내용 일부분 옮겨 적어본다. ---- 며칠 전 페북의 어떤 분 소개로 아래 글 보게 되었어요. 글 볼 땐 놓쳤는데 알고 보니 최근 글 아닌 2016년 거였더군요. https://eng.uber.com/postgres-to-mysql-migration/ 오래된 글이다 보니 요약 글들도 좀 있는 것 같던데 그 중 하나. https://sangwook.github.io/2016/09/13/uber-mysql-postgresql.html 그런데, 재미있는건 pg -> mysql 이전, 2012년도인가는 mysql -> pg 이렇게 변환 작업 했었던 역사 있다는거. 관..
[Java] FeignClient, no suitable HttpMessageConverter 에러 FastAPI 로 테스트용 API 서버 만들고 Spring Boot, Feign 이용해서 Rest Client 구현해서 기능 테스트는 마친 상태. 업체에서 API 테스트 서버 드디어 오픈했다고 연락와서 실제 연동 테스트 시작했는데 시작하자마자 에러 발생. 13:47:06.924 [http-nio-8080-exec-3] ERROR o.a.c.c.C.[.[.[.[dispatcherServlet](DirectJDKLog.java:175) - Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is feign.codec.De..
[Java]Pair, Pair.of() 메서드에서 2개의 값을 리턴하는거 깔끔하게 구현할 방법 찾아보다가 발견한 글. Using Pairs in Java 1. 작업 중이던 프로젝트에서는 마침 springframework 에 Pair Class 란게 있길래 사용해보았다. import org.springframework.data.util.Pair Pair pair = Pair.of(2, "Two"); pair.getFirst(); pair.getSecond(); 2. 'Apache Commons' 의 Pair Class Doc 보니 getKey/Value 외에 getLeft/Right 도 있다. 테스트해보지 않아 뭔 차이 있으려나는 아직 잘 모르...
[Java]Spring Cloud 에서 Kafka 인증 기능 사용 사내 내부망에서만 쓰는지라 Kafka에 인증 기능 적용하지 않고 설치, 사용해왔는데 이번에 외부 업체에서 제공하는 인증 기능 적용된 Kafka 에서 메시지 수신할 일 생겨서 작업한 거 메모. 사내 kafka(spring.cloud.stream.binders.kafka0), 외부 kafka(spring.cloud.stream.binders.kafka1) 각각 설정. 인증 방식으로 SASL/SCRAM 적용되어 있다고 해서 그것에 맞추에 configuration 과 jaas 설정. spring: cloud: stream: default-binder: kafka0 binders: kafka0: type: kafka environment: spring.cloud.stream.kafka.binder.brokers:..
오프라인 환경에서 Thunder Client 설치 Rest API 인터페이스 거의 처음 작업하게 된 동료 개발자에게 Postman 대신 소문만 접한 Thunder Client 소개해줬는데 외부 인터넷망 연결 안되는 환경에 설치해야 되는 상황이라기에 AS 차원에서 오프라인 환경에서 VS Code 익스텐션 설치하는 간단한 방법을 찾아서 알려주었다. 오프라인 설치 이리 쉬운걸 그동안 삽질 참 많이 했었다. https://www.vsixhub.com/vsix/55384/ VSIX 파일 다운로드. Command Palette (Ctrl+Shift+P) 에서 'Extensions: Install from VSIX' 실행. 다운로드한 vsix 파일 선택.
Spring Cloud Stream - Annotation-based, Function based 혼용 현재까지의 결론은 '안된다'. 테스트해본 바로는 두 방식을 함께 적용하면 annotation 만 동작하고 functional 한 방식은 동작하지 않는다. 해법 찾으려고 시도해봤지만 공식 문서에서의 언급은 못 찾았고 아래 글 보고 일단 잠정적으로 혼용 시도는 중단. 'You cannot mix EnableBinding and functional model in the same application.' https://stackoverflow.com/questions/63862797/spring-cloud-stream-function-support-does-not-work 작년이었나 Spring Cloud Stream 3.* 대 올라가면서 functional style 도입되었다는 기사 보고 이전 짰던 소스 ..
VIM 매크로 사용법 embulk 설정 파일 작업 중인데 input JSON 메시지가 종류가 많다보니 columns 정의해주는게 만만찮다. 각 메시지 샘플을 보고 일일이 타이핑하기 귀찮아서 간만에 vim 매크로 이용해본 김에 메모. 매크로 기본 사용법 이하 설명은 가독성 고려해서 'A'라는 매크로명으로 매크로 기록하고 사용한다고 가정. 이해하기 쉽게 매크로명이라고 했으나 정확히는 매크로가 저장될 register 주소로 a ~ z 사용 가능. 매크로 기록 qA -> 작업 -> q q 로 시작해서 q로 끝난다. 시작 q 다음은 매크로명. 레코딩 끝난 후 기록된 내용 보려면 reg(ister)명령을이용하면 된다. 가령 위 예에서 매크로명을 'A'라고 했으니 ':reg A' 라고 하면 된다. 매크로 실행 qA 3회 반복 실행 3qA..