이번 강의에서는 이전에 구현한 비동기 이벤트 스트리밍을 확장하여 Message
마이크로서비스에서 Accounts
마이크로서비스로 이벤트를 다시 전송하는 과정을 설명합니다. 이 과정은 전체 비즈니스 흐름을 완성하기 위한 중요한 단계입니다.
Message
마이크로서비스에서 Accounts
마이크로서비스로 이벤트를 스트리밍하기 위해 application.yml
파일에 Output Binding을 추가합니다.spring:
cloud:
stream:
bindings:
emailsms-out-0:
destination: communication-sent
이 설정은 emailsms
함수 조합의 결과(즉, sms
함수의 반환 값)가 communication-sent
라는 이름의 RabbitMQ 교환(exchange)으로 전송되도록 합니다.
Spring Cloud Stream
은 emailsms
함수의 반환 값(sms
함수에서 반환된 long 타입의 accountNumber
)을 RabbitMQ 교환으로 자동 전송합니다. 이를 통해 Message
마이크로서비스에서 이벤트를 트리거하고, 이를 Accounts
마이크로서비스가 수신할 수 있게 됩니다.Accounts
마이크로서비스에서 수신된 메시지를 처리하기 위해 새로운 패키지와 클래스를 생성합니다.package com.eazybytes.accounts.functions;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Service;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.function.Consumer;
@Configuration
public class AccountsFunctions {
private static final Logger log = LoggerFactory.getLogger(AccountsFunctions.class);
public Consumer<Long> updateCommunication() {
return accountNumber -> {
log.info("Updating Communication status for account number: {}", accountNumber);
// 여기에서 accountNumber를 사용하여 데이터베이스 업데이트 로직 구현
};
}
}
schema.sql
파일에 새로운 communicationSwitch
컬럼을 추가합니다. 이 컬럼은 Boolean
타입으로, 고객에게 커뮤니케이션이 성공적으로 전송되었는지를 추적합니다.ALTER TABLE accounts ADD communication_switch BOOLEAN;
communicationSwitch
컬럼을 업데이트합니다.public Boolean updateCommunicationStatus(Long accountNumber) {
// accountNumber를 사용하여 데이터베이스에서 계좌 정보를 가져와 communicationSwitch를 true로 설정하는 로직 구현
return true;
}
Accounts
마이크로서비스의 application.yml
파일에 새로운 Input Binding을 추가합니다. 이 설정은 Message
마이크로서비스에서 전송된 메시지를 수신할 수 있도록 합니다.spring:
cloud:
stream:
bindings:
updateCommunication-in-0:
destination: communication-sent
group: accounts-group
이 설정을 통해 Accounts
마이크로서비스는 communication-sent
큐를 모니터링하며, Message
마이크로서비스에서 전송된 메시지를 수신합니다.
Spring Cloud Stream의 강력함: Spring Cloud Stream
을 사용하면 코드 변경 없이 다른 메시지 브로커나 시스템으로 쉽게 전환할 수 있습니다. 이는 마이크로서비스 간의 비동기 통신을 보다 쉽게 관리하고 확장할 수 있게 해줍니다.
함수 조합의 유연성: Spring Cloud Functions
를 사용하면 함수들을 조합하여 복잡한 비즈니스 로직을 쉽게 구현할 수 있습니다. 이는 코드의 재사용성과 유지보수성을 높이는 데 매우 유용합니다.
이제 모든 설정이 완료되었으므로, 다음 강의에서는 이러한 변경 사항을 실제로 테스트하고, 두 마이크로서비스 간의 이벤트 스트리밍이 제대로 동작하는지 확인할 것입니다.
이번 강의에서는 Message
마이크로서비스에서 Accounts
마이크로서비스로 이벤트를 전송하기 위한 설정을 완료했습니다. 이를 통해 두 마이크로서비스 간의 양방향 비동기 통신을 구현하였으며, 이를 통해 전체 비즈니스 흐름이 완성되었습니다. 다음 강의에서는 이 설정들을 실제로 테스트하여 모든 것이 정상적으로 작동하는지 확인할 것입니다.