반응형
publisher와 subscriber가 외부의 메시지 큐(RabbitMQ)와 연결되어 있는 애플리케이션을 만들어보자.
- 자세한 설치법은 검색을 해서 찾아보면 간단하게 나온다.
- 하단의 내용은 local docker가 설치되어 있을때 docker-compose.yml을 작성할때 붙혀넣으면 된다.
rabbitmq:
image: rabbitmq:management
ports:
- "5672:5672” // 연결 포트
- "15672:15672” // 관리자 페이지 포트 (localhost:15672)
Maven
의존성 추가
1 2 3 4 | <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> </dependency> | cs |
Sender 클래스
Queue를 생성 해당 생성자의 파라미터는 Queue의 이름과 duration으로 구성된다. durable의 값이 true이면 서버가 재시작 되어도 큐에 내용이 살아있다.1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | @Component public class Sender { @Autowired RabbitMessagingTemplate template; @Bean Queue queue() { // 뒤에 durable의 경우에는 true이면 서버가 재시작 되어도 큐가 살아있다. (이름과 지속성여부 부여) return new Queue("TestQ", false); } public void send(String message) { template.convertAndSend("TestQ", message); } } | cs |
Receiver 클래스
RabbitListener을 통해 메시지를 받을 수 있다.
1 2 3 4 5 6 7 8 9 | public class Receiver { // RabbitListener만 추가하면 메시지를 받을 수 있다. @RabbitListener(queues = "TestQ") public void processMessage(String content) { System.out.println(content); } } | cs |
Spring Application 설정
CommandLineRunner 인터페이스를 구현할 경우 Override하는 run메서드는 어플리케이션이 올라갈때 실행된다. 이때 Sender 객체에 send 메서드를 호출시켜 Queue에 메시지를 전송하다.
정상적으로 전송이 완료되면 console창에 test 00!! 이라는 문구가 출력된다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | @SpringBootApplication public class MicroserviceApplication implements CommandLineRunner { @Autowired Sender sender; public static void main(String[] args) { SpringApplication.run(MicroserviceApplication.class, args); } @Override public void run(String... args) throws Exception { sender.send("test 00!!!"); } } | cs |
반응형
'web > 마이크로서비스' 카테고리의 다른 글
스프링 웹플럭스(spring webflux)를 활용한 간단한 리액티브 마이크로 서비스 (0) | 2018.10.04 |
---|---|
리액티브 스트림의 이해 (0) | 2018.10.04 |
리액티브 마이크로 서비스 정리 (0) | 2018.10.04 |
스프링 마이크로서비스 (MSA) 소개 (0) | 2018.05.27 |
애플리케이션 확장 방법 스케일 큐브 (Scale Cube) (0) | 2018.05.27 |