From adc1092531e379e7d51d64a1e71e1da30080837a Mon Sep 17 00:00:00 2001 From: Martin Krasser Date: Thu, 16 Sep 2010 15:18:28 +0200 Subject: [PATCH] Extended akka-sample-camel to include server-managed remote typed consumer actors. Minor refactorings. --- .../camel/RemoteTypedConsumer1Impl.java | 5 +---- .../sample/camel/RemoteTypedConsumer2.java | 15 +++++++++++++ .../camel/RemoteTypedConsumer2Impl.java | 9 +++----- .../src/main/scala/ClientApplication.scala | 22 +++++++++---------- .../src/main/scala/ServerApplication.scala | 14 +++++++----- 5 files changed, 38 insertions(+), 27 deletions(-) create mode 100644 akka-samples/akka-sample-camel/src/main/java/sample/camel/RemoteTypedConsumer2.java diff --git a/akka-samples/akka-sample-camel/src/main/java/sample/camel/RemoteTypedConsumer1Impl.java b/akka-samples/akka-sample-camel/src/main/java/sample/camel/RemoteTypedConsumer1Impl.java index 71eda6c270..0e05d5036c 100644 --- a/akka-samples/akka-sample-camel/src/main/java/sample/camel/RemoteTypedConsumer1Impl.java +++ b/akka-samples/akka-sample-camel/src/main/java/sample/camel/RemoteTypedConsumer1Impl.java @@ -1,8 +1,5 @@ package sample.camel; -import org.apache.camel.Body; -import org.apache.camel.Header; - import se.scalablesolutions.akka.actor.TypedActor; /** @@ -10,7 +7,7 @@ import se.scalablesolutions.akka.actor.TypedActor; */ public class RemoteTypedConsumer1Impl extends TypedActor implements RemoteTypedConsumer1 { - public String foo(@Body String body, @Header("name") String header) { + public String foo(String body, String header) { return String.format("remote1: body=%s header=%s", body, header); } } diff --git a/akka-samples/akka-sample-camel/src/main/java/sample/camel/RemoteTypedConsumer2.java b/akka-samples/akka-sample-camel/src/main/java/sample/camel/RemoteTypedConsumer2.java new file mode 100644 index 0000000000..3b2494ee4e --- /dev/null +++ b/akka-samples/akka-sample-camel/src/main/java/sample/camel/RemoteTypedConsumer2.java @@ -0,0 +1,15 @@ +package sample.camel; + +import org.apache.camel.Body; +import org.apache.camel.Header; +import se.scalablesolutions.akka.camel.consume; + +/** + * @author Martin Krasser + */ +public interface RemoteTypedConsumer2 { + + @consume("jetty:http://localhost:6644/camel/remote-typed-actor-2") + public String foo(@Body String body, @Header("name") String header); + +} diff --git a/akka-samples/akka-sample-camel/src/main/java/sample/camel/RemoteTypedConsumer2Impl.java b/akka-samples/akka-sample-camel/src/main/java/sample/camel/RemoteTypedConsumer2Impl.java index 68e208d834..5c76485aa7 100644 --- a/akka-samples/akka-sample-camel/src/main/java/sample/camel/RemoteTypedConsumer2Impl.java +++ b/akka-samples/akka-sample-camel/src/main/java/sample/camel/RemoteTypedConsumer2Impl.java @@ -1,16 +1,13 @@ package sample.camel; -import org.apache.camel.Body; -import org.apache.camel.Header; -import se.scalablesolutions.akka.camel.consume; +import se.scalablesolutions.akka.actor.TypedActor; /** * @author Martin Krasser */ -public class RemoteTypedConsumer2Impl { +public class RemoteTypedConsumer2Impl extends TypedActor implements RemoteTypedConsumer2 { - @consume("jetty:http://localhost:6644/camel/remote-typed-actor-2") - public String foo(@Body String body, @Header("name") String header) { + public String foo(String body, String header) { return String.format("remote2: body=%s header=%s", body, header); } diff --git a/akka-samples/akka-sample-camel/src/main/scala/ClientApplication.scala b/akka-samples/akka-sample-camel/src/main/scala/ClientApplication.scala index 7f671b0e45..9fab1b9649 100644 --- a/akka-samples/akka-sample-camel/src/main/scala/ClientApplication.scala +++ b/akka-samples/akka-sample-camel/src/main/scala/ClientApplication.scala @@ -1,7 +1,7 @@ package sample.camel import se.scalablesolutions.akka.actor.Actor._ -import se.scalablesolutions.akka.actor.{TypedActor, Actor, ActorRef} +import se.scalablesolutions.akka.actor.TypedActor import se.scalablesolutions.akka.camel.Message import se.scalablesolutions.akka.remote.RemoteClient @@ -10,22 +10,20 @@ import se.scalablesolutions.akka.remote.RemoteClient */ object ClientApplication extends Application { - // - // TODO: completion of example - // - - val actor1 = actorOf[RemoteActor1] + val actor1 = actorOf[RemoteActor1].start val actor2 = RemoteClient.actorFor("remote2", "localhost", 7777) - val actobj1 = TypedActor.newRemoteInstance( - classOf[RemoteTypedConsumer1], classOf[RemoteTypedConsumer1Impl], "localhost", 7777) - //val actobj2 = TODO: create reference to server-managed typed actor (RemoteTypedConsumer2Impl) + val typedActor1 = TypedActor.newRemoteInstance( + classOf[RemoteTypedConsumer1], + classOf[RemoteTypedConsumer1Impl], "localhost", 7777) - actor1.start + val typedActor2 = RemoteClient.typedActorFor( + classOf[RemoteTypedConsumer2], "remote3", "localhost", 7777) println(actor1 !! Message("actor1")) // activates and publishes actor remotely println(actor2 !! Message("actor2")) // actor already activated and published remotely - println(actobj1.foo("x", "y")) // activates and publishes typed actor methods remotely - // ... + println(typedActor1.foo("x1", "y1")) // activates and publishes typed actor methods remotely + println(typedActor2.foo("x2", "y2")) // typed actor methods already activated and published remotely + } diff --git a/akka-samples/akka-sample-camel/src/main/scala/ServerApplication.scala b/akka-samples/akka-sample-camel/src/main/scala/ServerApplication.scala index 3eb40aaca9..b3ef404841 100644 --- a/akka-samples/akka-sample-camel/src/main/scala/ServerApplication.scala +++ b/akka-samples/akka-sample-camel/src/main/scala/ServerApplication.scala @@ -3,6 +3,7 @@ package sample.camel import se.scalablesolutions.akka.actor.Actor._ import se.scalablesolutions.akka.remote.RemoteNode import se.scalablesolutions.akka.camel.CamelServiceManager +import se.scalablesolutions.akka.actor.TypedActor /** * @author Martin Krasser @@ -10,11 +11,14 @@ import se.scalablesolutions.akka.camel.CamelServiceManager object ServerApplication extends Application { import CamelServiceManager._ - // - // TODO: completion of example - // - startCamelService + + val ua = actorOf[RemoteActor2].start + val ta = TypedActor.newInstance( + classOf[RemoteTypedConsumer2], + classOf[RemoteTypedConsumer2Impl], 2000) + RemoteNode.start("localhost", 7777) - RemoteNode.register("remote2", actorOf[RemoteActor2].start) + RemoteNode.register("remote2", ua) + RemoteNode.registerTypedActor("remote3", ta) }