问题标签 [jeromq]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
3665 浏览

benchmarking - 为什么这个 JeroMQ(ZeroMQ 端口)基准测试这么慢?

我想使用我发现的这个库,它是 zeromq 的纯 Java 端口(不是包装器)。我正在尝试对其进行测试,虽然它声称有一些不错的数字,但我正在执行的测试结果相当糟糕,甚至在本地执行(客户端和在同一台机器上服务)。我确定这是我做错了什么。大约需要。5 秒来执行这 10.000 条消息循环。

我所做的只是采用 Hello world 示例并删除了暂停和系统输出。这是代码:

服务器:

客户端:

是否可以修复此代码并获得一些不错的数字?

0 投票
2 回答
1523 浏览

messaging - JeroMq 丢弃消息——如何防止?

我有以下“hello world” jeromq PUSH-PULL 客户端和服务器。只有在我设置了高水位标记值之后,我才能在不丢失消息的情况下进行传输。

根据 0Mq文档,当达到高水位线时,只有 PUB 套接字会丢弃消息。由于我使用的是 PUSH-PULL 套接字,为什么会丢弃消息?

在我看来,HWM 是系统的动态属性,所以虽然我已经能够解决在这个 hello world 示例中丢弃消息的问题,但我想知道我是否可以指望 jeromq 在现实世界的情况下不会丢弃消息?

0 投票
2 回答
3051 浏览

zeromq - jeromq 生产准备好了吗?

我过去曾通过库将 ZeroMQ 与 JVM 应用程序一起使用jzmq。我计划在一个新项目中使用 zeromq,其中一些服务是在 JVM 上实现的。我刚刚发现了jeromq,它是 zeromq 的纯 java 实现,我想主要使用它,因为它跟踪 zeromq 3.x,它消除了处理jzmq. 但是,我无法从 repo 页面判断它是否已准备好生产。有人有jeromq生产经验吗?

0 投票
1 回答
465 浏览

zeromq - 如何在 Java 中使用 ZeroMQ 创建原始套接字?

我正在尝试将 ZeroMq Hello World Http 服务器从 C 移植到 Java。在此代码片段中,router套接字设置为读取原始数据,但我不知道如何在 Java 中执行此操作...

根据指南,存在套接字类型ZMQ_ROUTER_RAW,所以我认为这可以在 Java 中使用...

...但实际上,我在 Java bindings中找不到这种类型的任何常量。而且我在 Socket 中也找不到合适的静态方法。我怀疑我在这里遗漏了一些东西;这很令人沮丧,因为这是一个小 API。

0 投票
1 回答
1696 浏览

android - 在 jeromq 中使用轮询

我正在学习在 android 中使用 zeromq 轮询。我正在对 android 程序(客户端)中的 req 套接字和子套接字进行轮询。这样该客户端既可以接收来自服务器的回复消息,也可以接收发布的消息。

我的投票不起作用。请求套接字和发布套接字都没有被轮询。如果我不使用轮询,两个套接字都会收到消息。

我尝试在线搜索,但找不到任何相关内容。客户端代码是这样的:

}

我错过了什么或做错了什么?

0 投票
2 回答
2503 浏览

java - jeromq:关闭上下文失败

编辑:解决了自己,见下文(虽然我不确定我是否在这里偶然发现了一个错误)

使用下面简单的 hello-world request-reply 示例,在程序结束时关闭上下文失败:它只是挂起ctx.close()或抛出以下异常:

无论哪种方式,程序都不会停止。

这是代码(请注意,套接字都在创建它们的线程中关闭):

编辑:解决了

事实证明这socket.close()不起作用,仅此ctx.destroySocket(socket)就足够了(它还关闭了套接字)。所以删除socket.close()解决了这个问题。这是一个错误吗?

0 投票
2 回答
4296 浏览

zeromq - 如果可以使用 JZMQ,为什么还需要 JeroMQ?

简单的问题。为什么在 java 上“移植”zmq 并将其称为 JeroMQ 是个好主意?

0 投票
1 回答
872 浏览

java - zeromq - 从 Tomcat 登录时处理 IOException

抱歉,我对 Java 比较陌生。我正在编写一个库来使用 zeromq (jeromq) 将日志从 Java 应用程序发送到 Logstash。

我的测试服务器之一是在 Tomcat 中运行的繁忙的 Jenkins 主服务器。我的图书馆,“Logit”(https://github.com/stuart-warren/logit)使用 PUSHPULL 套接字将其 JSON 格式的日志(JUL)喷洒到配置的 Logstash 端点列表(用于一些基本的负载平衡)上速度。

不幸的是,几天后它遇到了异常。Tomcat/Jenkins 继续工作并将日志写入其正常文件,但 Logit 停止通过网络发送消息。

我正在使用来自测试 6 节点 Cassandra 集群的相同版本的库日志记录(log4j),但我想这可能只是运气?

我的问题是,发送消息时应该如何处理上述异常?https://github.com/stuart-warren/logit/blob/master/src/main/java/com/stuartwarren/logit/zmq/ZmqTransport.java#L115

我应该关闭并重新打开套接字/上下文,还是应该在 Jeromq 库中处理?也许Tomcat更有可能抛出这些,它应该在我的JUL appender中处理?

谢谢。

0 投票
2 回答
3050 浏览

messaging - ZeroMq 路由器静默丢弃消息

我有一个服务器(ROUTER 套接字),它绑定并允许单个客户端(DEALER 套接字)连接到它。然后服务器开始发送数据。

理想情况下,我想知道路由器何时达到其 hwm 设置并开始丢弃消息。我已在路由器上将 ZMQ_ROUTER_MANDATORY 设置为 1,但这也无济于事。即使我故意没有启动客户端,路由器也会继续报告消息已发送(isAlive = false,因此在另一端没有任何东西可以提取这些消息)。

我做错了什么还是 HWM 设置在 ROUTER 套接字上根本不可靠?

我在 Windows 7 64 位上使用 jeromq 版本 0.3.1 和 jdk 1.6.0_32

谢谢

//客户

//主要的

0 投票
1 回答
1177 浏览

zeromq - 使用 zeromq (jeromq) 路由文件

我正在尝试在 zmq 上实现“文件调度程序”(实际上是 jeromq,我宁愿避免使用 jni)。

我需要的是将传入文件负载平衡到处理器:

  • 每个文件仅由一个处理器处理
  • 文件可能很大,所以我需要管理文件传输

理想情况下,我想要类似https://github.com/zeromq/filemq但是

  • 具有推/拉行为而不是发布/订阅
  • 能够处理接收到的文件而不是将其写入磁盘

我的想法是混合使用 taskvent/tasksink 和 asyncsrv 示例。

客户端:

  • 一个 PULL 套接字被通知要处理的文件
  • 一个 DEALER 套接字逐块处理(异步)文件传输块

服务器端:

  • 一个 PUSH 套接字来分派传入的文件(名称)
  • 一个 ROUTER 套接字来处理文件请求
  • 一些 DEALER 工作人员管理客户端的文件传输并通过 inproc 代理连接到路由器

我的第一个问题是:这似乎是正确的方法吗?有没有更简单的?

我的第二个问题是:我当前的实现卡在发送实际文件数据上。

  • 客户端由服务器通知,并发出请求。
  • 服务器工作人员收到请求,并将响应写回 inproc 队列,但响应似乎永远不会离开服务器(在 wireshark 中看不到),客户端卡在 poller.poll 上等待响应。

这不是套接字已满并丢弃数据的问题,我从一次性发送的非常小的文件开始。

有什么见解吗?

谢谢!

===================

按照 raffian 的建议,我简化了我的代码,删除了推/拉额外的插座(现在你说它确实有意义)

我只剩下“不工作”的插座了!

这是我当前的代码。它有许多目前超出范围的缺陷(客户端 ID、下一个块等)

现在,我只是想让两个人大致按照这个顺序交谈

  • 服务器

    /li>
  • 客户

    /li>