我是Ruby開發人員,而不是Java開發人員,因此我試圖找到最新的使用Scala Akka圖書館與JRuby但短缺。在JRuby中使用Akka 2.3.8的示例 - 具體使用Java :: AkkaActor :: Props
我有下面的代碼來代替......
require "java"
[
"akka-2.3.8/lib/scala-library-2.11.4.jar",
"akka-2.3.8/lib/akka/akka-actor_2.11-2.3.8.jar",
"akka-2.3.8/lib/akka/config-1.2.1.jar"
].each { |lib| $CLASSPATH << lib }
java_import java.lang.System
java_import "java.io.Serializable"
java_import "akka.actor.ActorRef"
java_import "akka.actor.ActorSystem"
java_import "akka.actor.Props"
java_import "akka.actor.UntypedActor"
class Greeting
include Serializable
attr_reader :who
def initialize(who)
@who = who
end
end
class GreetingActor < UntypedActor
class << self
alias_method :apply, :new
alias_method :create, :new
end
def onReceive(message)
puts "Hello " + message.who
end
end
system = ActorSystem.create("GreetingSystem") # <Java::AkkaActor::ActorSystemImpl:0x68c9133c>
props = Props.new(GreetingActor) # Java::AkkaActor::Props
greeter = system.actorOf(props, "greeter");
greeter.tell(Greeting.new("Rocky Jaiswal"));
system.shutdown
system.await_termination
...但是這導致了以下錯誤......
ArgumentError: wrong number of arguments (1 for 3)
(root) at size.rb:39
此錯誤是由Props.new(GreetingActor)
引起的,但閱讀Akka的文檔,目前還不清楚如何將該代碼翻譯成Ruby。
有誰知道如何解決這個問題?看着http://doc.akka.io/api/akka/2.3.1/index.html#akka.actor.Props我看不到這是如何關聯/映射到Ruby代碼。
我知道Celluloid ruby庫,但我想看看如何使用更低級的代碼來實現Actor模式。這似乎比我最初想象的更尷尬。