package camelinaction; import io.reactivex.Flowable; import junit.framework.TestCase; import org.apache.camel.CamelContext; import org.apache.camel.FluentProducerTemplate; import org.apache.camel.component.reactive.streams.api.CamelReactiveStreams; import org.apache.camel.component.reactive.streams.api.CamelReactiveStreamsService; import org.apache.camel.impl.DefaultCamelContext; import org.junit.Test; import org.reactivestreams.Publisher; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class CamelFirstTest extends TestCase { private static final Logger LOG = LoggerFactory.getLogger(NumbersTest.class); @Test public void testCamelFirst() throws Exception { LOG.info("Starting RX-Java2 Flowable Camel first"); // create Camel CamelContext camel = new DefaultCamelContext(); // create Reative Camel CamelReactiveStreamsService rxCamel = CamelReactiveStreams.get(camel); camel.start(); rxCamel.start(); // create a publisher from Camel seda:words endpoint Publisher<String> publisher = rxCamel.from("seda:words", String.class); Flowable.fromPublisher(publisher) // upper case the word .map(w -> w.toUpperCase()) // log the big number .doOnNext(w -> LOG.info(w)) .subscribe(); // send some words to Camel FluentProducerTemplate template = camel.createFluentProducerTemplate(); template.withBody("Camel").to("seda:words").send(); template.withBody("rocks").to("seda:words").send(); template.withBody("streams").to("seda:words").send(); template.withBody("as").to("seda:words").send(); template.withBody("well").to("seda:words").send(); // sleep a bit for reactive subscriber to complete Thread.sleep(1000); camel.stop(); rxCamel.stop(); } }