별집사의 IT세상

[JAVA] kafka sub 리스너 자동 실행 방법 본문

IT/Kafka

[JAVA] kafka sub 리스너 자동 실행 방법

별집사 2022. 9. 5. 10:27
반응형
@KafkaListener(id = "아이디",
   topics = "토픽명", 
   groupId = "sampleGroup", 
   containerFactory = "kafkaListenerContainerFactoryForList",
   autoStartup = "false")

 

서비스에서 autoStartup을 false로 지정하면된다.

 

리스너 실행 수동조작방법은 컨트롤러를 따로 생성해서 endpointRegistry 이용!

@RestController
public class HandleController {

@Autowired
private KafkaListenerEndpointRegistry kafkaListenerEndpointRegistry;

    @GetMapping(path  = "/start")
    public String start() {
        MessageListenerContainer listenerContainer = kafkaListenerEndpointRegistry.getListenerContainer("아이디");
        listenerContainer.start();
        return "started Sub listening";
    }

    @GetMapping(path = "/stop")
    public String stop() {
        MessageListenerContainer listenerContainer = kafkaListenerEndpointRegistry.getListenerContainer("아이디");
        listenerContainer.stop();
        return "stopped Sub listening";
    }
}

 

여러개의 sub을 id 할당해서 하려면, path뒤에 id를 받으면 된다.

@RestController
public class HandleController {

@Autowired
private KafkaListenerEndpointRegistry kafkaListenerEndpointRegistry;

    @GetMapping(path  = "/start/{아이디}")
    public String start(@PathVariable String 아이디) {
        MessageListenerContainer listenerContainer = kafkaListenerEndpointRegistry.getListenerContainer("아이디");
        listenerContainer.start();
        return "started Sub listening";
    }

    @GetMapping(path = "/stop/{아이디}")
    public String stop(@PathVariable String 아이디) {
        MessageListenerContainer listenerContainer = kafkaListenerEndpointRegistry.getListenerContainer("아이디");
        listenerContainer.stop();
        return "stopped Sub listening";
    }
}

 

 

postman 등을 이용해 실행하면 성공

다른 리스너가 켜져있으면 로그 확인하기가 힘들었는데 서버를 재기동 할 필요없이 작업할 수 있어서 개발시간이 줄어든다.

반응형

'IT > Kafka' 카테고리의 다른 글

[Kafka] kafka connect transform issue 정리  (1) 2022.09.07
[Kafka] Kafka Config Ackmode  (0) 2022.09.06
Comments