Spring Micro Services(25)
-
Spring Micro Service with gRPC 프로젝트 설정
이 프로젝트를 시작하는 이유는 기존의 Micrso Service 또는 외부 API 연동은 RESTful 방식을 많이 사용해 왔는데 얼마전 udemy 에서 gRPC강의를 들은 후 프로젝트에 적용하기 위해 시작하게 되었다. 강의를 들은 다음에 의문점은 실제 DB에 연동하였을때는 어떻한 성능을 보일지 궁금 하여서 이 부분에 대한 성능 검증을 할려고 한다. 서비스아키텍처 아키텍처1 관련 Maven Module - order_app - payment-rest-server 아키텍처2 관련 Maven Module - order_app - payment-grpc-server 아키텍처3 관련 Maven Module - order_app - payment-load-balance - payment-grpc-client - ..
2021.04.13 -
Spring AMQP
Spring Boot에서 Spring AMQP 를 이용하여서 Producer와 Consumer를 구현해 보도록 하겠다. 전체적인 프로젝트소스는 아래 사이트에서 다운받으시면 됩니다. 소스: https://github.com/roopy1210/springboot-mvc-rabbitmq/tree/master/springboot-mvc-rabbitmq 프로젝트 설정 메이븐 모듈 프로젝트로 설정한다. 프로젝트 구조는 아래와 같다. PRODUCER Exchage Type과 Queue 설정을 위한 환경설정 클래스인 RabbitMQConfig.java 프로그램을 작성한다. package com.roopy.producer.config; import org.springframework.amqp.core.Binding; i..
2020.04.19 -
Topic
Exchanges-Topics topic은 routing pattern과 routing key와 routing pattern 사이의 와일드카드 매치를 기본으로 메세지를 보내게 된다. Senario 1 모든 메세지를 수신 하기 원하는 경우 Exchage: topics Queue1: Temp Queue Routing Pattern: # Senario 2 특정 개발팀만 메세지를 수신 하기 원하는 경우 Exchage: topics Queue1: Temp Queue Routing Pattern: dev.team.* Senario 3 특정 디자인팀만 메세지를 수신 하기 원하는 경우 Exchage: topics Queue1: Temp Queue Routing Pattern: developer.* PRODUCER 메세..
2020.04.19 -
Routing
Exchanges-Direct 앞선 예제에서는 메세지를 Queue로 바로 보내고 Consumer 입장에서는 메세지를 구독하는 형태 였다. 이번 예제에서는 Queue로 메세지를 바로 보내는 것이 아니라 Exchange로 메세지를 전달하고 Exchange 에서는 받은 메세지를 처음에 언급한 4가지 Exchange Type에 의해서 Queue로 Routing 처리 하게 된다. 그 유형중 Direct에 대해 알아볼려고 한다. 위의 그림을 이해하면 아래 소스를 이해하는데 도움이 될것이다. 1. Producer는 Exchage 이름은 "direct_logs"로 하고 Type은 "direct"으로 해서 Exchange를 생성한다. 2. direct exchage "direct_logs" 는 두개의 Queue에 Bin..
2020.04.19 -
Publish/Subscribe
Exchanges-fanout 앞선 예제에서는 메세지를 Queue로 바로 보내고 Consumer 입장에서는 메세지를 구독하는 형태 였다. 이번 예제에서는 Queue로 메세지를 바로 보내는 것이 아니라 Exchange로 메세지를 전달하고 Exchange 에서는 받은 메세지를 처음에 언급한 4가지 Exchange Type에 의해서 Queue로 Routing 처리 하게 된다. 그 유형중 fanout에 대해 알아볼려고 한다. 위의 그림을 이해하면 아래 소스를 이해하는데 도움이 될것이다. 1. Producer는 Exchange 이름을 "logs"로 하고 Type은 "fanout"으로 해서 Exchange를 생성한다. 2. Producer는 생성된 Exchange 이름에 메세지를 전송한다. 3. Consumer는 ..
2020.04.19 -
Work Queues
Hello World! 에서는 지정한 큐로 메세지를 주고 받는 프로그램을 작성해았습니다. 이번 예제에서는 시간이 많이 걸리는 작업을 여러작업에 배포하는 예제를 알아보자. Work Queues 의 가장 핵심적인 개념은 Round-robin 분배 방식이다. 리소스를 많이 사용하는 작업을 즉시 수행하지 않고 완료될때까지 기다려야 한다. 대신에 작업이 나중에 수행 될수 있도록 예약해야 합니다. 작업을 메시지로 캡슐화하여 대기열로 보냅니다. 백그라운드에서 실행중인 작업 프로세스는 작업을 Pop 하고 작업을 실행합니다. 여러 Worker를 실행하면 작업은 공유 될것입니다. PRODUCER 메세지 발송을 위한 NewTask.java 프로그램을 작성한다. package com.rabbitmq.tutorials.chap..
2020.04.19