我有以下简单路线:
import org.apache.camel.builder.RouteBuilder
import akka.actor.ActorRef
import akka.camel._
class SimpleRouteBuilder(val responder: ActorRef) extends RouteBuilder {
def configure = {
from("file:C:\\datafiles\\input?noop=true&readLock=changed").to(responder)
}
我的响应者演员如下:
class Responder extends Actor {
def receive = {
case msg: CamelMessage => { ??? }
}
}
只是想知道如何将CamelMessage类型的msg转换为 有用的东西,所以我可以提取文件名或文件路径。
更新
我找到了一个解决方案,但正如Viktor Klang所指出的那样,它容易出错。
更改路线构建器:
from("file:C:\\datafiles\\input?noop=true&readLock=changed").convertBodyTo(classOf[java.io.File]).to(responder)
以这种方式解压缩java.io.File对象:
msg.body.asInstanceOf[java.io.File]
正确的解决方案?
更正确的解决方案似乎是:
implicit val camelContext = CamelExtension(context.system).context;
self ! camelMessage.bodyAs[java.io.File];