春天云流与反应流

vin*_*ent 4 spring spring-integration reactive-programming apache-kafka spring-cloud-stream


我的目标是使用Spring云流和Kafka创建一个应用程序,并发现"被动"世界.我有一些有用的东西.这是我消费者的一部分.在我的pom中,我宣布:

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-stream-kafka</artifactId>
        </dependency>
Run Code Online (Sandbox Code Playgroud)

这是我使用的1.0.0.RELEASE.
我宣布了我的频道

public interface MyChannels {

    public static final String TOPIC_NAME = "myTopicName";

    @Input(TOPIC_NAME)
    MessageChannel receive();
}
Run Code Online (Sandbox Code Playgroud)

然后我的服务

@MessageEndpoint
@EnableBinding(MyChannels.class)
public class MyConsumer {

    @Autowired
    private MyChannels channels;

    @ServiceActivator(inputChannel=MyChannels.TOPIC_NAME)
    public void receive(MyObject object) {
        //apply my business logic
        //like save my object in a database
    }
}
Run Code Online (Sandbox Code Playgroud)

我很好地收到了我的信息.我在我的依赖项中看到spring-integration-kafka依赖于reactor-core.是否足以使我的应用程序"被动"?我该怎么做才能应用反应式编程风格?

我是否必须使用@EnableRxJavaProcessor,如果是的话,我不明白怎么做.

如果我不清楚,请不要犹豫,写评论.谢谢

Mar*_*ici 6

Reactor的使用是项目的内部,并不会使您的应用程序被动(不仅仅是:)).

此处的参考文档涵盖了对RxJava支持的使用:http://docs.spring.io/spring-cloud-stream/docs/current/reference/htmlsingle/#_rxjava_support

我们打算在这里提供更广泛的Spring Cloud Stream 1.1支持:https://github.com/spring-cloud/spring-cloud-stream/issues/458

干杯,马吕斯