当前位置: 首页 > 知识库问答 >
问题:

Akka-ZMQ订阅服务器创建错误(轮询)

谷梁宝
2023-03-14

我成功创建了publisher,但使用以下方法创建订阅服务器失败:

    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]关闭JVM的未捕获错误,因为在Akka.zeromq.concurrentSocketActor$$AnonFun$10处为ActorSystem[System]java.lang.NosuchMethoderror:org.zeromq.zmq$poller.poll(J)J启用了'akka.jvm-exit-on-fatal-error'。在Akka.zeromq.concurrentSocketActor$$AnonFun$10处应用在Akka.zeromq.concurrentsocketactor.scala:197)Akka.zeromq.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 java.util.concurrent.ThreadPoolExecutor$worker.run(ThreadPoolExecutor.jav)A:615)在java.lang.thread.run处(thread.java:722)

什么意思?

共有1个答案

孔阳炎
2023-03-14

我在尝试与akka-zeromq合作时也遇到了同样类型的错误,并对此进行了一些调查。因此情况如下:错误消息声明它没有在类zmq.poller中找到方法long poll(long timeout)(有关错误消息解释,请参见此答案)。出现这种情况是因为以下原因

  1. Akka是用zeromq-scala绑定构建的。
  2. ZeromQ-Scala应该与jzmq兼容,但不幸的是目前还不兼容,因为在scala绑定中有方法long poll(long timeout)
  3. 而在jzmq中有 int poll(long timeout)

要在本地解决这个问题,您要么使用zmq.jar重建Akka,要么使用快速而肮脏的解决方案:更改jzmq zmq.poller类中方法poll(long timeout)的返回类型,并重建java绑定。有关更多详细信息和绑定兼容性讨论,请参阅此处

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

 类似资料:
  • 当我使用sqlplus客户端登录到oracle 12时,我面临以下错误/警告。 SQL*Plus:12.1.0.2.0版于2019年11月8日星期五05:38:11发布 版权所有(c)1982年,2014年,甲骨文。版权所有。 订户-1581956048创建失败:上次成功登录时间:2019年11月8日星期五05:36:31-05:00 连接到:Oracle数据库12c企业版发布12.1.0.2.0

  • > 糟糕的图案设计 仅在连接订阅服务器时才启动,如果没有可用的订阅服务器时停止 不成功共享数据,需要两个类(主题类和重复可观察类) 我希望避免监听器/接口来共享周围的信息,让rxjava2来完成它的工作。 经过研究,我发现有refcount()和share(),但我不确定这是否是解决这个问题的正确方法。在我的例子中,这是一个REST服务,它轮询服务器,如果至少有一个订阅服务器连接到其他地方,它应该

  • 我正在尝试创建订阅以接收有关 Office365 日历更改的通知。我已经使用过Outlook通知API,但微软涂鸦API有问题 我尝试使用Http Post创建订阅以https://graph.microsoft.com/beta/subscriptions标题和正文: > 标头:Content-Type:application/json;授权:持有者{access Toke} 正文: { "re

  • 我正在尝试使用spring-integration-kafka-2.1.0。在我公司的项目中发布。但是,由于下面列出的例外情况,它不起作用:org。springframework。信息。MessageDeliveryException:Dispatcher没有频道“org”的订户。springframework。网状物上下文WebApplicationContext:/order。“奥Kafka”

  • 我不能运行Springeureka服务器,我得到以下错误。 组织。springframework。豆。工厂UnsatifiedPendencyException:创建名为“org”的bean时出错。springframework。云netflix。尤里卡。EurekaClientAutoConfiguration$RefreshableEurekaClientConfiguration:通过字段“

  • 我已经设法编写了一个小型控制台应用程序来连接到Azure服务总线中的一个主题/订阅。我已经向订阅发送了消息并注册了一个消息处理程序。我看到消息处理程序每60秒轮询一次。例如,是否将轮询间隔延长至30或60分钟?