Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,5 @@ import java.util.UUID

interface ApplicationCreateEventContract {
fun publishCreateApplication(receiptCode: Long, userId: UUID)
fun submitApplicationFinal(receiptCode: Long)
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,9 @@ import java.util.UUID
@Component
class ApplicationEventProducer(
private val mapper: ObjectMapper,
private val createApplicationTemplate: KafkaTemplate<String, Any>
): ApplicationCreateEventContract {
private val createApplicationTemplate: KafkaTemplate<String, Any>,
private val submitApplicationFinalTemplate: KafkaTemplate<String, Any>,
) : ApplicationCreateEventContract {

/**
* 원서 생성 이벤트를 발행합니다.
Expand All @@ -39,4 +40,19 @@ class ApplicationEventProducer(
mapper.writeValueAsString(createApplicationEvent)
)
}

/**
* 최종 제출 이벤트를 발행합니다.
*
* 원서가 성공적으로 최종 제출된 후 성적 서비스에서 해당 원서의 성적을
* 계산하도록 이벤트를 발행합니다.
*
* @param receiptCode 최종 제출한 원서의 접수번호
*/
override fun submitApplicationFinal(receiptCode: Long) {
submitApplicationFinalTemplate.send(
KafkaTopics.SUBMIT_APPLICATION_FINAL,
receiptCode
)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,26 @@ class KafkaProducerConfig(
return DefaultKafkaProducerFactory(producerConfig())
}

/**
* 최종 제출 이벤트 발행을 위한 KafkaTemplate을 생성합니다.
*
* @return 설정된 KafkaTemplate 인스턴스
*/
@Bean
fun submitApplicationFinalTemplate(): KafkaTemplate<String, Any> {
return KafkaTemplate(submitApplicationFinalProducerFactory())
}

/**
* 최종 제출 이벤트용 Producer Factory를 생성합니다.
*
* @return 설정된 DefaultKafkaProducerFactory 인스턴스
*/
@Bean
fun submitApplicationFinalProducerFactory(): DefaultKafkaProducerFactory<String, Any> {
return DefaultKafkaProducerFactory(producerConfig())
}

/**
* Kafka Producer의 기본 설정을 구성합니다.
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,4 +31,10 @@ object KafkaTopics {
* 이 이벤트 수신 시 보상 트랜잭션으로 원서를 삭제함
*/
const val USER_RECEIPT_CODE_UPDATE_FAILED = "user-receipt-code-update-failed"

/**
* 최종 제출 이벤트 토픽
* 최종 제출 시 성적 서비스에 성적 계산을 요청하기 위해 사용
*/
const val SUBMIT_APPLICATION_FINAL = "submit-application-final"
}
Loading