Akka ClusterReceptionatorExtension不支持';t注册用户
我试图在我们的应用程序中使用akka pub sub。我有一个play应用程序,它是akka集群的一部分。我想使用akka cluster client使此应用程序侦听/订阅主题,并将从其他应用程序发布消息 群集/用户端代码[在播放应用程序内]Akka ClusterReceptionatorExtension不支持';t注册用户,akka,akka-cluster,Akka,Akka Cluster,我试图在我们的应用程序中使用akka pub sub。我有一个play应用程序,它是akka集群的一部分。我想使用akka cluster client使此应用程序侦听/订阅主题,并将从其他应用程序发布消息 群集/用户端代码[在播放应用程序内] class MyRealtimeActor extends Actor { import DistributedPubSubMediator.{ Subscribe, SubscribeAck } def receive = {
class MyRealtimeActor extends Actor {
import DistributedPubSubMediator.{ Subscribe, SubscribeAck }
def receive = {
case SubscribeAck(Subscribe("metrics", _)) => {
Logger.info("SUBSCRIBED TO MESSAGES")
context become ready
}
}
def ready: Actor.Receive = {
case m => {
Logger.info("RECEIVED MESSAGE " + m)
}
}
}
我在Global中这样实例化
val cluster: ActorSystem = ActorSystem("ClusterSystem")
val metricsActor = Global.cluster.actorOf(Props(new MyRealtimeActor), "metricsActor")
ClusterReceptionistExtension(cluster).registerSubscriber("metrics", metricsActor)
conf文件具有以下内容
akka {
actor {
provider = "akka.cluster.ClusterActorRefProvider"
extensions = ["akka.contrib.pattern.DistributedPubSubExtension",
"akka.contrib.pattern.ClusterReceptionistExtension"]
}
remote {
log-remote-lifecycle-events = off
netty.tcp {
hostname = "127.0.0.1"
port = 2551
}
}
cluster {
seed-nodes = [
"akka.tcp://ClusterSystem@127.0.0.1:2551"
]
auto-down-unreachable-after = 10s
}
当启动播放应用程序时,我可以看到以下日志
[INFO] [11/06/2013 17:48:42.926] [ClusterSystem-akka.actor.default-dispatcher-3] [Cluster(akka://ClusterSystem)] Cluster Node [akka.tcp://ClusterSystem@127.0.0.1:2551] - Node [akka.tcp://ClusterSystem@127.0.0.1:2551] is JOINING, roles []
[INFO] [11/06/2013 17:48:42.942] [ClusterSystem-akka.actor.default-dispatcher-5] [akka://ClusterSystem/deadLetters] Message [akka.contrib.pattern.DistributedPubSubMediator$SubscribeAck] from Actor[akka://ClusterSystem/user/distributedPubSubMediator#1608017981] to Actor[akka://ClusterSystem/deadLetters] was not delivered. [1] dead letters encountered. This logging can be turned off or adjusted with configuration settings 'akka.log-dead-letters' and 'akka.log-dead-letters-during-shutdown'.
想知道为什么演员没有得到适当的订阅?我希望它能打印订阅的消息,问题是订阅标记被发送给订阅消息的发送者,而不是订阅消息中的参与者。要将SubscribeAck发送给metricsActor,它必须将Subscribe本身直接发送给中介
接待员由群集客户端代码使用,您不应该使用它来正常订阅您的参与者。metricsActor启动是否正确?似乎调解人正在直接向死信发送确认。您可以尝试将日志级别更改为debug吗?我已经在这里捕获了日志-。我可以清楚地看到我的演员已经开始了。@Björn Antonsson任何指点都会有很大的帮助