首页 文章

Akka-ZMQ订户创建错误(民意调查)

提问于
浏览
1

我成功创建了发布者但未能使用以下内容创建订阅者:

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());
    }

得到此错误:来自线程[System-akka.zeromq.socket-dispatcher-7]的未捕获错误因为'akka.jvm-exit-on-fatal-error'为ActorSystem [System] java.lang.NoSuchMethodError启用而关闭JVM :org.zeromq.ZMQ $ Poller.poll(J)J at akka.zeromq.ConcurrentSocketActor $$ anonfun $ 10.apply(ConcurrentSocketActor.scala:180)at akka.zeromq.ConcurrentSocketActor $$ anonfun $ 10.apply(ConcurrentSocketActor.scala: 179)at akka.zeromq.ConcurrentSocketActor.akka $ zeromq $ ConcurrentSocketActor $$ doPoll(ConcurrentSocketActor.scala:197)at akka.zeromq.ConcurrentSocketActor $$ anonfun $在akka.actor接收$ 1.applyOrElse(ConcurrentSocketActor.scala:46) . 在akka.dispatch.Mailbox.ailMailbox(Mailbox.scala:230)atkka.dispatch.Mailbox.run(邮箱)的akka.actor.ActorCell.invoke(ActorCell.scala:386)中的ActorCell.receiveMessage(ActorCell.scala:425) .scala:212)java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.jav) a:615)在java.lang.Thread.run(Thread.java:722)

这是什么意思?

2 回答

  • 2

    好像你要么丢失了,要么在你的路径上使用了错误版本的zeromq-scala-binding .

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

  • 0

    我在尝试使用akka-zeromq时遇到了同样的错误,并对该主题进行了一些调查 . 所以情况如下:错误消息表明它没有在类ZMQ.Poller中找到方法 long poll(long timeout) (请参阅this回答错误消息解释) . 这是因为以下原因

    • Akka是使用zeromq-scala绑定构建的 .

    • zeromq-scala应该与jzmq兼容,但不幸的是它现在不是因为在scala绑定中你有方法 long poll(long timeout) 而在jzmq中你有 int poll(long timeout)

    要在本地解决您的问题,您必须使用zmq.jar重建Akka,或使用快速而又脏的解决方法:在jzmq ZMQ.Poller类中更改方法 poll(long timeout) 的返回类型并重建java绑定 . 有关更多详细信息和绑定兼容性讨论,请查看here

    但是,存在全局java / scala绑定兼容性问题,但它超出了您的问题的范围 .

相关问题