Consumer 를 추가하자. “jko-topic” 을 listen 하는 consumer 이다. CountDownLatch 는 테스트 할 때, producer 가 send 한 record 를 consumer thread 가 consume 을 완료할 때 까지 대기하기 위해 사용된다.
테스트를 작성할 때의 핵심은, 외부 카프카 서버에 의존하지 않고 테스트하는 것이다. 이를 위해, spring-kafka-test 에서 지원하는 @EmbeddedKafka 를 사용한다. @EmbeddedKafka 는, Spring for Apache Kafka 기반 테스트를 실행하는 테스트 클래스에 지정할 수 있는 어노테이션이다. 테스트를 실행할 때, in-memory kafka instance 를 사용하게 된다.
테스트 코드르 작성해보자. @EmbeddedKafka 의,
partitions 는, 토픽 당 파티션을 몇으로 할지에 대한 설정이다.
brokerProperties 는, broker 를 실행하기 전에 broker config 에 추가해야 하는 key=value 형식의 설정이다.
@Test internalfun `embedded kafka 를 사용할 때, producer 가 메세지를 보내면 consumer 는 메세지를 받는다`() { // given val topic = "jko-topic" val message = "Messi is the best"
// when producer.produce(topic, message)
// then consumer.await() assertTrue(consumer.equalsConsumedMessageWith(message)) } }