Akka ClusterReceptionatorExtension不支持';t注册用户

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 = {

我试图在我们的应用程序中使用akka pub sub。我有一个play应用程序,它是akka集群的一部分。我想使用akka cluster client使此应用程序侦听/订阅主题,并将从其他应用程序发布消息

群集/用户端代码[在播放应用程序内]

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任何指点都会有很大的帮助