미해결
[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!
직렬화, 역직렬화 관련
안녕하세요. 좋은 강의 감사합니다.직렬화, 역직렬화 관련해서 질문이 있습니다.저는 Spring 프레임워크를 사용해서 프로듀서와, 컨슈머를 각각 따로 서버를 만들어서 개발 하고 있습니다.수업 내용은 단순히 String이지만 제가 실무에 사용하려고하는건 웹 애플리케이션 과 같이 DTO 클래스로받은 데이터를 그대로 프로듀서에서 send()에 담아서 보내고 있습니다. 컨슈머에서 DTO로 받으려고관련 자료를 찾아 보니 JsonSerializer가 있어 해보았습니다. Object 로 받아서 여러 DTO를 받을 수 있는Consumer factory를 만들다 보니 여러 에러가 발생해서 ObjectMapper를 사용했습니다.@Component
public class ObjectMapperService {
private final ObjectMapper objectMapper = new ObjectMapper();
public <T> T convertValue(String json, Class<T> valueType) throws JsonProcessingException {
return objectMapper.readValue(json, valueType);
}
}@Component
@Slf4j
@Data
@RequiredArgsConstructor
public class KafkaConsumer {
private final ObjectMapperService mapper;
@KafkaListener(topics = "member-join", containerFactory = "commonKafkaListenerContainerFactory")
public void receiveMemberJoin(ConsumerRecord<String, String> consumerRecord, Acknowledgment acknowledgment) throws Exception {
String value = consumerRecord.value();
MemberJoin memberJoin = mapper.convertValue(value, MemberJoin.class);
String recommendCode = memberJoin.getRecommendCode();
log.info("recommendCode: {}", recommendCode);
log.info("received payload = {}", memberJoin.toString());
acknowledgment.acknowledge();
}
}이런식으로 사용해서 DTO클래스로 사용했는데 실무에서는 어떤식으로 하는지 궁금합니다. 혹시 참고할 수 있는 정보가 있을까요?감사합니다.