The idea is to filter the sources, replacing @<var>@ occurrences with the mapping for <var> (which is currently hard-coded). @@ -> @. In order to make this work, I had to move the doc sources one directory down (into akka-docs/rst) so that the filtered result could be in a sibling directory so that relative links (to _sphinx plugins or real code) would continue to work. While I was at it I also changed it so that WARNINGs and ERRORs are not swallowed into the debug dump anymore but printed at [warn] level (minimum). One piece of fallout is that the (online) html build is now run after the normal one, not in parallel.
128 lines
No EOL
3.6 KiB
Scala
128 lines
No EOL
3.6 KiB
Scala
package docs.camel
|
|
|
|
import akka.camel.CamelExtension
|
|
import language.postfixOps
|
|
|
|
object Producers {
|
|
object Sample1 {
|
|
//#Producer1
|
|
import akka.actor.Actor
|
|
import akka.actor.{ Props, ActorSystem }
|
|
import akka.camel.{ Producer, CamelMessage }
|
|
import akka.util.Timeout
|
|
|
|
class Producer1 extends Actor with Producer {
|
|
def endpointUri = "http://localhost:8080/news"
|
|
}
|
|
//#Producer1
|
|
//#AskProducer
|
|
import akka.pattern.ask
|
|
import scala.concurrent.util.duration._
|
|
implicit val timeout = Timeout(10 seconds)
|
|
|
|
val system = ActorSystem("some-system")
|
|
val producer = system.actorOf(Props[Producer1])
|
|
val future = producer.ask("some request").mapTo[CamelMessage]
|
|
//#AskProducer
|
|
}
|
|
object Sample2 {
|
|
//#RouteResponse
|
|
import akka.actor.{ Actor, ActorRef }
|
|
import akka.camel.{ Producer, CamelMessage }
|
|
import akka.actor.{ Props, ActorSystem }
|
|
|
|
class ResponseReceiver extends Actor {
|
|
def receive = {
|
|
case msg: CamelMessage ⇒
|
|
// do something with the forwarded response
|
|
}
|
|
}
|
|
|
|
class Forwarder(uri: String, target: ActorRef) extends Actor with Producer {
|
|
def endpointUri = uri
|
|
|
|
override def routeResponse(msg: Any) { target forward msg }
|
|
}
|
|
val system = ActorSystem("some-system")
|
|
val receiver = system.actorOf(Props[ResponseReceiver])
|
|
val forwardResponse = system.actorOf(Props(new Forwarder("http://localhost:8080/news/akka", receiver)))
|
|
// the Forwarder sends out a request to the web page and forwards the response to
|
|
// the ResponseReceiver
|
|
forwardResponse ! "some request"
|
|
//#RouteResponse
|
|
}
|
|
object Sample3 {
|
|
//#TransformOutgoingMessage
|
|
import akka.actor.Actor
|
|
import akka.camel.{ Producer, CamelMessage }
|
|
|
|
class Transformer(uri: String) extends Actor with Producer {
|
|
def endpointUri = uri
|
|
|
|
def upperCase(msg: CamelMessage) = msg.mapBody {
|
|
body: String ⇒ body.toUpperCase
|
|
}
|
|
|
|
override def transformOutgoingMessage(msg: Any) = msg match {
|
|
case msg: CamelMessage ⇒ upperCase(msg)
|
|
}
|
|
}
|
|
//#TransformOutgoingMessage
|
|
}
|
|
object Sample4 {
|
|
//#Oneway
|
|
import akka.actor.{ Actor, Props, ActorSystem }
|
|
import akka.camel.Producer
|
|
|
|
class OnewaySender(uri: String) extends Actor with Producer {
|
|
def endpointUri = uri
|
|
override def oneway: Boolean = true
|
|
}
|
|
|
|
val system = ActorSystem("some-system")
|
|
val producer = system.actorOf(Props(new OnewaySender("activemq:FOO.BAR")))
|
|
producer ! "Some message"
|
|
//#Oneway
|
|
|
|
}
|
|
object Sample5 {
|
|
//#Correlate
|
|
import akka.camel.{ Producer, CamelMessage }
|
|
import akka.actor.Actor
|
|
import akka.actor.{ Props, ActorSystem }
|
|
|
|
class Producer2 extends Actor with Producer {
|
|
def endpointUri = "activemq:FOO.BAR"
|
|
}
|
|
val system = ActorSystem("some-system")
|
|
val producer = system.actorOf(Props[Producer2])
|
|
|
|
producer ! CamelMessage("bar", Map(CamelMessage.MessageExchangeId -> "123"))
|
|
//#Correlate
|
|
}
|
|
object Sample6 {
|
|
//#ProducerTemplate
|
|
import akka.actor.Actor
|
|
class MyActor extends Actor {
|
|
def receive = {
|
|
case msg ⇒
|
|
val template = CamelExtension(context.system).template
|
|
template.sendBody("direct:news", msg)
|
|
}
|
|
}
|
|
//#ProducerTemplate
|
|
}
|
|
object Sample7 {
|
|
//#RequestProducerTemplate
|
|
import akka.actor.Actor
|
|
class MyActor extends Actor {
|
|
def receive = {
|
|
case msg ⇒
|
|
val template = CamelExtension(context.system).template
|
|
sender ! template.requestBody("direct:news", msg)
|
|
}
|
|
}
|
|
//#RequestProducerTemplate
|
|
}
|
|
|
|
} |