Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 可以用反应器代替骆驼吗?如果可以,那么如何正确地进行?_Java_Apache Camel_Jms_Reactive Programming_Project Reactor - Fatal编程技术网

Java 可以用反应器代替骆驼吗?如果可以,那么如何正确地进行?

Java 可以用反应器代替骆驼吗?如果可以,那么如何正确地进行?,java,apache-camel,jms,reactive-programming,project-reactor,Java,Apache Camel,Jms,Reactive Programming,Project Reactor,我想知道ApacheCamel是否可以被Reactor或其他一些反应流(RS)库所取代 我对Reactor和RS世界还不熟悉,但似乎我已经准备好了一些用于侦听JMS消息的流量,尽管我不确定我的方法是否正确(这个项目帮助我做到了-)。主要组成部分: @Component public class PublisherMessageListener { private final DefaultMessageListenerContainer jmsContainer; publi

我想知道ApacheCamel是否可以被Reactor或其他一些反应流(RS)库所取代

我对Reactor和RS世界还不熟悉,但似乎我已经准备好了一些用于侦听JMS消息的流量,尽管我不确定我的方法是否正确(这个项目帮助我做到了-)。主要组成部分:

@Component
public class PublisherMessageListener {

    private final DefaultMessageListenerContainer jmsContainer;

    public PublisherMessageListener(DefaultMessageListenerContainer jmsContainer, EventProcessor processor) {
        this.jmsContainer = jmsContainer;
        publisher().subscribe(processor::process);
    }

    private Flux<String> publisher() {
        return Flux.from(subscriber -> {
            MessageListener listener = message -> {
                if (message instanceof TextMessage) {
                    TextMessage textMessage = (TextMessage) message;
                    try {
                        subscriber.onNext(textMessage.getText());
                    } catch (Exception e) {
                        subscriber.onError(new RuntimeException(e));
                    }
                }
            };
            jmsContainer.setMessageListener(listener);
        });
    }
}

我开始玩反应堆,因为它将在春天的某个时候。对我来说,Akka流似乎更倾向于Scala(不知道它对Java的支持)。反应堆也似乎比RxJava更面向Java8,我喜欢反应堆的通量和Mono,而不仅仅是一个可流动的。但是,如果您能提供一些很好的论据,说明为什么特定的库更好,我很高兴听到这些论据。

从camel 2.11开始,有一个
camel rx
模块,它集成了RxJava API

您是否有特别的原因要更换骆驼?你想获得什么优势?嗯,不是很有说服力,但我认为反应流和Camel有些相似,但RS似乎更轻,因为我想尝试一些新的东西=D
onException(RuntimeException.class)
    .maximumRedeliveries(2)
    .to(ERROR_URI);

from(URI)
    .aggregate(expression(this::getKey), AggregationStrategies.useLatest())
    .completionTimeout(DELAY_MILLIS)