본문 바로가기

spring

spring boot 에 rabbitmq 적용하기 RabbitMQ 란open source Message broker 로 알려져 있다즉 mircro service에서 Producer-Consumer pattern을 이용할 시에 producer 가 message 를 send 하면 consumer가 소비하는 구조이다. 예를 들자면 어느 shop 에서 고객이 주문을 요청하면 producer 가 주문flow를 요청하고microservice 에서 주문 요청을 처리하는 flow를 소비한다는 개념이다이때 중간에서 rabbitMQ가비동기로 이 주문요청의 event message를 queue 형식으로 받고 microservice에 전달하는 역할을 한다고 보면 된다.RabbitMQ 기본개념AMQP(Advanced Message Queuing Protocol) : 시스템 간..
(Spring Boot) @Transactional 이란? / @Transactional에 대하여 @TransactionalStackOverflow 질문중 UserNameNotFoundException 발생시 delete method가 실행되지않는다는 질문에 답을 하였습니다.https://stackoverflow.com/questions/52619924/how-to-execute-transaction-in-hibernate-while-throwing-exception/52620514#52620514I have the following method in my transactional service layer implemented with Hibernate:@Override public void activateAccount(String username, String activationCode) throw..
RxJava 적용하기 (0) - RxJava overview 좋은 어플리케이션을 만들기 위해서는 3가지 요소를 고려하여야 한다. Responsiveness, Elasticness, Resilience이다.RxJava 설정하기 io.reactivex.rxjava2 rxjava 2.1.0RxJava는 어떻게 동작하는가?Dzone에 있는 모든 문서를 가져와주는 어플리케이션을 예시로 살펴보자.public class DzoneDBDao { private static DzoneDBDao service = new DzoneDBDao(); public static DzoneDBDao get() { return service..
토비의 스프링 5-4장. 메일 서비스 추상화 메일 서비스 추상화고객으로부터 사용자 레벨 관리에 관한 새로운 요청사항이 들어온 경우라면?User에 email 추가upgradeLevel()에 메일 발송 기능 추가JavaMail이 포함된 코드의 테스트테스트 코드를 돌리면 SMTP host에 연결할 수 없다고 에러가 날 것이다.그렇다면 아래 처럼 테스트 서버를 구축하는건 어떨까?UserService ---> JavaMail ---> 메일 서버 ---> 테스트용 메일 서버매번 메일이 발송되는건 바람직하지 못하다. 메일 발송은 부하가 큰 작업일 뿐 아니라, JavaMail은 검증된 라이브러리이다. 따라서 JavaMail API를 통해 요청이 들어간다는 보장만 있다면 굳이 테스트할 때마다 JavaMail을 구동시킬 필요가 없다.UserService ---> J..
(Spring Boot Bean) 사용자 클래스 Bean 객체 등록 / 설정 간단하게 하기! 사용자 클래스의 Spring Bean 등록/설정먼저 사용자 클래스를 Spring Bean 으로 등록하는 쉬운 방법은 클래스 선언부 위에 @Component 어노테이션을 사용하는 것 입니다.@Component 어노테이션이 붙은 클래스는 Spring Bean 객체로 등록이 되어 객체 생성/삭제를 Spring에서 관리하게 되겠죠?@Componentpublic class MyClass { // Methods ....}Spring Boot로 서비스를 구현 하는 중에, 제가 구현한 Class를 Bean객체로 사용하고싶었지만해당 Class의 field 1을 Autowired로 가지고, field 2를 Instance화 하는데에 또 다른 Bean Class의 Instance 객체가 필요한 특수한 상황이라 쉽지 않았습니..