Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Akka ZMQ订户创建错误(轮询)_Akka_Zeromq_Jzmq_Akka Zeromq - Fatal编程技术网

Akka ZMQ订户创建错误(轮询)

Akka ZMQ订户创建错误(轮询),akka,zeromq,jzmq,akka-zeromq,Akka,Zeromq,Jzmq,Akka Zeromq,我已成功创建发布服务器,但无法使用以下命令创建订阅服务器: public static void main(String [] args) { ActorSystem system = ActorSystem.create("System"); ActorRef subscriber = system.actorOf(new Props(Sub.class), "subscriber"); subscriber.tell

我已成功创建发布服务器,但无法使用以下命令创建订阅服务器:

    public static void main(String [] args)
    {
        ActorSystem system = ActorSystem.create("System");
        ActorRef subscriber = system.actorOf(new Props(Sub.class),   "subscriber");    
        subscriber.tell(new MyActor("CharlieParker", 50, 25), subscriber);
    }
    public class Sub extends UntypedActor 
    {
        ActorRef subSocket = ZeroMQExtension.get(getContext().system()).newSubSocket(
        new Connect("tcp://127.0.0.1:1237"),
        new Listener(getSelf()), Subscribe.all());
    }
出现以下错误: 由于ActorSystem[System]启用了“akka.JVM在致命错误时退出”,线程[System akka.zeromq.socket-dispatcher-7]关闭JVM时出现未捕获错误 java.lang.NoSuchMethodError:org.zeromq.ZMQ$Poller.poll(J)J 在akka.zeromq.ConcurrentSocketActor$$anonfun$10.apply(ConcurrentSocketActor.scala:180) 在akka.zeromq.ConcurrentSocketActor$$anonfun$10.apply(ConcurrentSocketActor.scala:179) 在akka.zeromq.concurrentsocketator.akka$zeromq$concurrentsocketator$$doPoll(concurrentsocketator.scala:197) 在akka.zeromq.ConcurrentSocketActor$$anonfun$receive$1.applyOrElse(ConcurrentSocketActor.scala:46) 在akka.actor.ActorCell.receiveMessage(ActorCell.scala:425) 在akka.actor.ActorCell.invoke(ActorCell.scala:386) 在akka.dispatch.Mailbox.processMailbox(Mailbox.scala:230) 在akka.dispatch.Mailbox.run(Mailbox.scala:212) 位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 运行(Thread.java:722)


这意味着什么?

您的路径上似乎缺少zeromq scala绑定,或者该绑定的版本不正确


您使用的是哪个版本的akka和zeromq?

我在尝试使用akka zeromq时遇到了相同类型的错误,并对此进行了一些调查。因此,情况如下:错误消息声明它在类ZMQ.Poller中未找到方法
long poll(long timeout)
(有关错误消息的解释,请参阅答案)。发生这种情况的原因如下

  • Akka是使用zeromq scala绑定构建的
  • zeromq scala本应与jzmq兼容,但不幸的是,目前还不兼容,因为在scala绑定中,您有方法
    long poll(long timeout)
    ,而在jzmq中,您有
    int poll(long timeout)
  • 要在本地解决您的问题,您必须使用zmq.jar重新构建Akka,或者使用快速而肮脏的解决方法:更改jzmq zmq.Poller类中方法
    poll(长超时)
    的返回类型,并重新构建java绑定。有关更多详细信息和绑定兼容性讨论,请查看


    然而,存在一个全局java/scala绑定兼容性问题,但这超出了您的问题范围

    我已经构建了zeromq-3.2.2.tar()和jzmq-master()。将生成的zmq.jar复制到项目类路径,库似乎位于我的本地:Hakan MacBook Pro:lib Hako$ls | grep libjzmq libjzmq.0.dylib libjzmq.a libjzmq.dylib libjzmq.la Hakan MacBook Pro:lib Hako$ls | grep libzmq libzmq.3.dylibzmq.a libzmq.dylibzmq libzmq.laI也构建了这个(在我读了你的评论之后)当前位置问题仍然存在。现在我明白了。在类路径中有jzmq绑定吗?Akka依赖于此处可用的zeromq scala绑定,它们不是彼此的替代品。此外,您不必自己构建任何这些绑定。如果您只是将akka zeromq工件作为依赖项添加到maven或sbt项目中,您应该获得所有必要的java/scala库。。。使用ZeroMQ 3.2.2和为dll和jar构建的主干。无问题:-(