-
kafka Consumer group id 랜덤으로 부여프로젝트/kafka 2023. 8. 4. 00:01728x90
개요
Consumer의 groupId를 랜덤으로 부여하여 pub/sub처럼 구성하고 싶었습니다.
Instance가 여러 대일 때 동기화 하고자 했습니다.
KafkaListener doc
/** * Override the {@code group.id} property for the consumer factory with this value * for this listener only. * <p>SpEL {@code #{...}} and property place holders {@code ${...}} are supported. * @return the group id. * @since 1.3 */ String groupId() default "";
groupId를 SpEL 문법을 통해서도 지정할 수 있습니다.
SpEL 문법이란?
Spring Expression Language의 약자로 런타임에서 객체에 대한 쿼리와 조작을 지원하는 언어입니다.
KafkaListener에 SpEL 문법 적용
@KafkaListener(topics = ["testTopic"], groupId = "#{ T(java.util.UUID).randomUUID().toString() }") fun consume(@Payload payload: String, acknowledgment: Acknowledgment) { logger.info("Consumer start: $payload") acknowledgment.acknowledge() }
적용 후 실행로그
2023-07-06T15:50:32.367+09:00 INFO 61101 --- [ntainer#0-0-C-1] o.s.k.l.KafkaMessageListenerContainer : 90ac82ff-ef6d-4c21-b8e6-27b22f86ff58: partitions assigned: [testTopic-0]
instance1에 uuid가 랜덤으로 부여됨
2023-07-06T15:50:13.947+09:00 INFO 61041 --- [ntainer#0-0-C-1] o.s.k.l.KafkaMessageListenerContainer : 605e11e0-d01f-4bb7-9205-50fd69335e9a: partitions assigned: [testTopic-0]
instance2에 uuid가 랜덤으로 부여됨
참고자료
https://docs.spring.io/spring-framework/docs/3.2.x/spring-framework-reference/html/expressions.html
'프로젝트 > kafka' 카테고리의 다른 글
kafka Dead Letter Queue(DLQ, DLT) (0) 2023.08.07 kafka 메시지 삭제 정책 (0) 2023.08.06 Kafka 객체 SERIALIZER, DESERIALIZER (0) 2023.08.05 kafka consumer offset option (latest vs earliest) (0) 2023.08.03 kafka는 왜 속도가 빠를까? (1) 2023.07.29