Hi Blair,
this would be very helpful. Although I didn't use plain Camel with the
Scala REPL yet, I was using
https://github.com/krasserm/scalaz-camel/wiki a lot recently. Example
(with the Scala console started from sbt inside scalaz-camel):
scala> import scalaz.camel._
import scalaz.camel._
scala> import Camel._
import Camel._
scala> implicit val router = new Router(new
org.apache.camel.impl.DefaultCamelContext)
router: scalaz.camel.Router = scalaz.camel.Router@3d66c39
scala> router.start
Feb 14, 2011 9:01:51 AM org.apache.camel.impl.DefaultCamelContext start
INFO: Apache Camel 2.5.0 (CamelContext: camel-1) is starting
...
scala> def appnd(s:String) = (m:Message) => m.appendToBody(s) // example
message processor
appnd: (s: String)(scalaz.camel.Message) => scalaz.camel.Message
scala> from("direct:test") { appnd("-1") >=> appnd("-2") } // example route
scala> val template = router.context.createProducerTemplate // create
producer template
template: org.apache.camel.ProducerTemplate =
org.apache.camel.impl.DefaultProducerTemplate@32326807
scala> template.requestBody("direct:test", "a")
res2: java.lang.Object = a-1-2
Using plain Camel with the Scala REPL should comparable easy.
Cheers,
Martin
Am 14.02.11 03:43, schrieb Blair:
Due to a fault in one of the third party cloud projects we have been talking
to, we needed to produce a system that took http requests, logged what we
were called with (so we could process them later) and return a 200(ok) http
header, with the text "OK" in it. And we needed one in under 10 minutes!, as
the server that was handling the requests were going off line.
We didn't know which Uri's were going to be called on the system, so it had
to work for any of them...
Happily, setting up camel (since we already has a bunch of maven based
projects using it) and getting the route was trivial.
it looked like...
from("jetty:http://0.0.0.0:8123?matchOnUriPrefix=true").to("log:log").transform(constant("OK"));
and that was it - pure magic :)
It got me thinking that prebuilt project that we could control camel from an
interactive shell would be very useful for situations like this.
I've started experimenting with the Scala interactive shell as a way of
defining and starting / stopping routes.
Has anyone else tried anything like this? Would this be useful to anyone if
we can get it to work?
--- Blair
--
Martin Krasser
blog: http://krasserm.blogspot.com
code: http://github.com/krasserm
twitter: http://twitter.com/mrt1nz