You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "james strachan (JIRA)" <ji...@apache.org> on 2014/09/17 14:51:34 UTC

[jira] [Created] (CAMEL-7833) create an extension of the RX Observable to add more of the Camel DSL in there (e.g. to() or to go back to the general camel DSL)

james strachan created CAMEL-7833:
-------------------------------------

             Summary: create an extension of the RX Observable<T> to add more of the Camel DSL in there (e.g. to() or to go back to the general camel DSL)
                 Key: CAMEL-7833
                 URL: https://issues.apache.org/jira/browse/CAMEL-7833
             Project: Camel
          Issue Type: New Feature
            Reporter: james strachan


with Camel RX and java 8 we can do some nice lambdas and typesafe filtering and transformation:
{code}
ReactiveCamel rx = new ReactiveCamel(camelContext);
Observable<Order> observable = rx.toObservable("seda:orders", Order.class);
 
// now lets filter and map using Java 8
Observable<String> largeOrderIds = observable.
  filter(order -> order.getAmount() > 100.0).
  map(order -> order.getId());
 
rx.sendTo(observable, "activemq:MyQueue");
{code}
however the DSL isn't quite as nice as Camel's due to the lack of the camel verbs like "to()". It'd be nice to provide an extended Observable<T> interface which adds more of Camel's DSL in there too; so you can still use things the RX way; but can also reuse the camel DSL too (in a typesafe way). 

e.g. something like this
{code}
// Observable comes from RX; it'd be nice to have a camel extended version so we can add camel DSL stuff in there like to() etc....
CamelStream<Order> orders = rx.stream("seda:orders", Order.class);
 
// now lets filter and map using Java 8
orders.
  filter(order -> order.getAmount() > 100.0).
  map(order -> order.getId()).
  to("activemq:MyQueue");
{code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)