Closed ecsimsw closed 1 month ago
@PostMapping("v1/telegram/abank")
fun aBank(@RequestBody request: TelegramDto): ABankTelegramPayload {
// 공통부 Deserialize
val ABank헤더 = request.parseHeader(ABankTelegramHeader::class.java)
// 공통부에 존재하는 전문 코드 값으로 전문 클래스 포맷 조회
val 전문Class = TelegramClassResolver.getTelegramClass(ABankTelegramHeader)
// 전체 전문 Deserialize
val 요청전문 = request.parseTelegram(ABankGetBalanceOutboundPayload::class.java)
// ABank 전용으로 구성한 TcpClient로 요청
val 응답전문 = aBankTcpClient.process(요청전문)
return 응답전문
}
비동기방식의 TCP 통신에서는 이러한 방식의 구현으로는 제대로 동작되지 않아요. 비동기방식의 통신에서는 요청을 보낸 세션으로 응답이 오지 않을 수 있기 때문이에요.
통지를 받아야 할 마이크로 서비스에 장애가 발생할 경우 TCP Gateway가 전달한 전문들이 그대로 유실될 수 있어요. 따라서 TCP Gateway는 통지 전문에 한해서 전문을 미리 저장소에 저장해 두고, 재처리 가능한 기능을 제공했어요.
https://medium.com/daangn/%ED%99%95%EC%9E%A5%EC%84%B1-%EC%9E%88%EB%8A%94-tcp-%ED%86%B5%EC%8B%A0-%EC%8B%9C%EC%8A%A4%ED%85%9C-%EA%B5%AC%EC%B6%95%ED%95%98%EA%B8%B0-981c230cdc77