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)
(有关错误消息的解释,请参阅答案)。发生这种情况的原因如下
long poll(long timeout)
,而在jzmq中,您有int poll(long timeout)
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构建的主干。无问题:-(