Java 可以用反应器代替骆驼吗?如果可以,那么如何正确地进行?
我想知道ApacheCamel是否可以被Reactor或其他一些反应流(RS)库所取代 我对Reactor和RS世界还不熟悉,但似乎我已经准备好了一些用于侦听JMS消息的流量,尽管我不确定我的方法是否正确(这个项目帮助我做到了-)。主要组成部分: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
@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)