@KafkaListener должен извлекать новые данные только при выполнении определенных условий. Если условие не выполняется, извлечение данных должно прекратиться до тех пор, пока условие не будет выполнено.

Вариант использования, над которым я работаю, заключается в том, что сообщение, полученное от KafkaListener, запускает асинхронный метод. Я хочу, чтобы этот метод Aysnc завершился и только после этого получил новое сообщение из очереди kafka. Любые идеи или предложения относительно этой реализации? Может ли какфка поддерживать такой сценарий.

eg

while(asyncMethod.idle()){
@KafkaListener(String data)
public void listen(){
process(message);
asyncMethod.execute();
}
}

person Anand Bangad    schedule 21.07.2017    source источник


Ответы (1)


Меня смущает этот вопрос, но похоже, вы хотели бы сделать это синхронным, а не асинхронным?

Либо так, либо вы можете реализовать блокировку, чтобы в основном убедиться, что она не прослушивается, если блокировка не является ложной, и установить блокировку в значение true после получения сообщения.

Вы можете захотеть поработать над своей реализацией/архитектурой, однако Kafka не следует использовать для поддержания порядка или блокировки таким образом.

person Chad    schedule 21.07.2017