개발

· 개발
RabbitListener를 구현하기 가장 간단한 방법은 @RabbitListener을 public 메서드에 선언 하는 것입니다. @RabbitListener(bindings = @QueueBinding( value = @Queue, exchange = @Exchange(value = "exchange"), key = "key" )) public void doSomething(Something something) {} 위의 방법은 간단히 RabbitListener을 구현 할 수 있다는 장점이 있지만 RabbitListener에 대한 설정과 메시지를 처리하는 코드가 한 곳에 모여있다는 점이 "어노테이션 말고 다른 방법으로 선언할 수 없을까?" 하는 생각으로 이어졌던 것 같습니다. 그래서 이번 글에서는 Ra..
· 개발
RabbitMQ에서 제공하는 AMQP 문서를 바탕으로 프로젝트를 진행하며 도움이 되었던 내용을 정리합니다.아래 내용은 문서 번역 | 추가 메모 로 구성되어 있습니다. What is AMQP 0-9-1?AMQP 0-9-1(고급 메시지 큐 프로토콜)은 호환되는 클라이언트 애플리케이션이 호환되는 메시징 미들웨어 브로커와 통신할 수 있도록 하는 메시징 프로토콜입니다. 메시징 브로커는 퍼블리셔(메시지를 게시하는 애플리케이션, 생산자라고도 함, publisher)로부터 메시지를 수신하여 컨슈머(메시지를 처리하는 애플리케이션, consumer)에게 라우팅 합니다.네트워크 프로토콜이기 때문에 퍼블리셔, 컨슈머, 브로커가 모두 다른 컴퓨터에 있을 수 있습니다. 위와 같이 퍼블리셔, 컨슈머, 브로커가 모두 다른 컴퓨터에서..
· 개발
시작하며@Transactional에 대해서 다시 한번 공부하며 자료를 찾아보다 아래 링크에 방문하게 되었습니다.https://sup2is.github.io/2021/03/04/java-exceptions-and-spring-transactional.html글의 내용도 너무 좋았지만, 글에 달린 댓글이 저의 눈을 사로잡았습니다.깔끔하게 정리된 포스팅 잘 봤습니다.@Transactional이 TransactionAspectSupport 을 호출한다는 것은 어떻게 알 수 있을까요?이렇게 멋지게 찾아가는 방법을 알려주시면 감사하겠습니다!위의 댓글을 보며 저도 제가 무언가를 공부할 때 어떻게 공부하는지 다시 한번 점검해 보았고 @Transactional을 알아보며 제가 공부하는 방법을 공유해보려 합니다. 환경 준..
· 개발
최근 올라오는 컨퍼런스의 영상을 보다보면 이벤트, 메시지를 기반으로 아키텍처를 구성하는 경우를 많이 확인할 수 있습니다.이때 이벤트와 메시지의 차이에 대해 항상 모호함을 가지고 있었고 이를 RabbitMQ와 함께 알아보려 합니다. 이벤트와 메시지의 차이제가 파악한 이벤트와 메시지의 가장 큰 차이는 수신자 여부입니다.이벤트는 발행된 이벤트를 수신할 수 있는 수신자를 특정하지 않습니다.그렇기에 이벤트의 내용은 단지 무언가 일어났다는 것이고 발행자는 이벤트를 수신자가 누구인지, 자신의 이벤트를 받을 준비가 되어있는지 알지 못한 상태로 발행합니다.이때 이벤트는 일반적으로 topics, topic/fanout exchanges, stream, notification service를 활용한 발행 구독(publish..
· 개발
우리가 스프링 부트(이하 부트)를 사용할 때 yml 파일을 통해 편하게 관련 설정을 하곤 하는데 그러한 일이 어떻게 가능한지 생각해 보신 적 있나요? 부트는 spring-boot-autoconfigure에서 정의된 AutoConfiguration 클래스들을 통해 우리가 편리하게 관련 설정을 할 수 있도록 돕고 있습니다. 예를 들어 우리가 부트를 통해 프로젝트를 수행하며 datasource를 위해 작성하는 아래와 같은 설정은 DataSourceAutoConfiguration 클래스가 우리를 돕고 있습니다. spring: datasource: jdbcUrl: ${ DATASOURCE_URL } username:${ DATASOURCE_USERNAME } password: ${ DATASOURCE_PASSWO..
· 개발
전문가를 위한 스프링5라는 책을 읽으며 자바빈 스타일로 작성된 인터페이스 예제를 만났습니다. (p70) 제가 만난 예제는 아래와 같습니다. public interface MessageProvider { String getMessage(); } public interface MessageRenderer { void render(); void setMessageProvider(MessageProvider provider); MessageProvider getMessageProvider(); } 위의 코드를 보면서 느낀 점은 각각의 인터페이스에 적절한 책임이 할당되어 있다는 것입니다. 그런데 위의 인터페이스를 통해 빈을 등록한다고 하면 약간의 어색함을 느끼는 사람이 많을 것 같습니다. 우선 저의 경우는 습관적..
belljun
'개발' 카테고리의 글 목록 (4 Page)