spring-cloud-stream с функциональным программированием

в моем приложении сообщения kafka использовались streamlistner из нескольких тем, но я хочу добавить функциональный потребительский компонент для одной темы. Возможно ли, что некоторые темы потребляются streamlistner, а некоторые - потребительским компонентом в одном приложении? когда я пытался, темы создавались только те, которые потребляются streamlistner, но не для потребительских компонентов?

приложение.yml

spring:
  cloud:
    function:
        definition: printString
    stream:
        kafka:
            binder:
                brokers: localhost:9092
                zkNodes: localhost:2181
                autoCreateTopics: true
                autoAddPartitions: true
            bindings:
                printString-in-0:
                  destination: function-input-topic
                  group: abc
                  consumer:
                    maxAttempts: 1
                    partitioned: true
                    concurrency: 2
                xyz-input:
                  group: abc
                  destination: xyz-input-input
                  consumer:
                    maxAttempts: 1
                    partitioned: true
                    concurrency: 2

тема была создана для темы ввода xyz, но не для темы ввода функции

потребительский боб

import java.util.function.Consumer;

@Component
public class xyz {

   @Bean
   Consumer<String> printString() {
       return System.out::print;
   }
}

Интерфейс kafkaConfig

public interface KafkaConfig {

   @Input("xyz-input")
   SubscribableChannel inbound();
}

person DOGGA V SIVA KUMAR    schedule 22.03.2021    source источник


Ответы (1)


Нет, мы пытались в прошлом, но есть тонкие проблемы, когда два режима программирования сталкиваются. Довольно просто разложить любой StreamListener на функциональный способ (в основном удаляя код), и приложение на самом деле становится намного проще.

Просто избавьтесь от KafkaConfig интерфейса, избавьтесь от @EnableBinding и все будет хорошо.

person Oleg Zhurakousky    schedule 22.03.2021