- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想知道如何正确关闭 JeroMQ,到目前为止我知道三种方法都有其优点和缺点,我不知道哪一种是最好的。
情况:
static ZContext CONTEXT = new ZContext();
Thread thread;
public void start() {
thread = new Thread(new B()).start();
}
public void stop() {
thread.stopping = true;
thread.join();
}
boolean stopping = false;
ZMQ.Socket socket;
public void run() {
socket = CONTEXT.createSocket(ROUTER);
... // socket setup
socket.setReceiveTimeout(10);
while (!stopping) {
socket.recv();
}
if (NUM_SOCKETS >= 1) {
CONTEXT.destroySocket(socket);
} else {
CONTEXT.destroy();
}
}
static ZContext CONTEXT = new ZContext();
ZMQ.Socket socket;
Thread thread;
public void start() {
socket = CONTEXT.createSocket(ROUTER);
... // socket setup
thread = new Thread(new B(socket)).start();
}
public void stop() {
thread.stopping = true;
CONTEXT.destroySocket(socket);
}
boolean stopping = false;
ZMQ.Socket socket;
public void run() {
try {
while (!stopping) {
socket.recv();
}
} catch (ClosedSelection) {
// socket closed by A
socket = null;
}
if (socket != null) {
// close socket myself
if (NUM_SOCKETS >= 1) {
CONTEXT.destroySocket(socket);
} else {
CONTEXT.destroy();
}
}
}
recv
已经阻塞了有时不会抛出异常。如果我在启动线程 A 后等待一毫秒,则总是抛出异常。我不知道这是一个错误还是只是我误用的结果,因为我共享套接字。
ctx.term()
并中断
socket.recv()
中的线程阻塞.
最佳答案
人们经常提到,您可以直接销毁 zmq 上下文,并且任何共享该上下文的内容都将退出,但这会造成一场噩梦,因为您的退出代码必须尽最大努力避免意外调用死套接字对象的雷区。
尝试关闭套接字也不起作用,因为它们不是线程安全的,最终会导致崩溃。
回答:最好的方法是按照 ZeroMQ 指南建议的那样通过多线程使用;使用 zmq 套接字而不是线程互斥锁/锁等。设置一个额外的监听器套接字,您将在关闭时连接和发送一些内容,并且您的 run() 应该使用 JeroMQ 轮询器来检查您的两个套接字中的哪个接收到任何内容 - 如果附加套接字接收到一些内容,则退出。
关于sockets - JeroMQ 正确关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22686651/
我花了一天的时间来解决这个问题,所以如果您计划使用 ZeroMQ 和 java 绑定(bind)设置 CentOS 6.4,也许它可以节省您的时间。 从 github 的源代码安装了 jzmq、lib
我想知道如何正确关闭 JeroMQ,到目前为止我知道三种方法都有其优点和缺点,我不知道哪一种是最好的。 情况: 线程 A:拥有上下文,应提供启动/停止方法 线程 B:实际监听线程 我目前的方法: 线程
我过去曾通过 jzmq 库将 ZeroMQ 与 JVM 应用程序一起使用。我计划在一个新项目中使用 Zeromq,其中一些服务是在 JVM 上实现的。我刚刚发现jeromq ,zeromq 的纯 ja
zmq pub socket 是否可以在多个主题上发布相同的消息?或者换句话说,子套接字是否可以匹配发布/订阅信封的 header 帧中的众多前缀之一? 最佳答案 我很确定答案是否定的——SUB 套接
我在 java 中有一个 server,它接收一个 json 文件并通过 jeromq 将它发送到一个 C 程序。直到上周我才用几个 json 测试了它。直到现在我有另一个组件可以发送它们,我才发送了
编辑:自己解决了,见下文(虽然我不确定我是否在这里偶然发现了一个错误) 使用下面这个简单的 hello-world 请求-回复示例,在程序结束时关闭上下文失败:它要么简单地卡在 ctx.close()
我目前正在尝试修改简单的 hwclient/hwserver 示例,以将具有预定义大小的字节数组发送到服务器。我已经看到基本上功能是按以下形式给出的: public boolean send(byte
已结束。此问题正在寻求书籍、工具、软件库等的推荐。不满足Stack Overflow guidelines 。目前不接受答案。 我们不允许提出寻求书籍、工具、软件库等推荐的问题。您可以编辑问题,以便用
我认为我的 zmq.jar 有问题,所以我尝试使用 jeroMQ,但我遇到了同样的问题。 这是我的方法: private boolean submitEvent(String ioMessage) {
在我们最近的项目中,我们尝试保护 pub-sub jeromq 连接。 为此,我们希望主机首先通过网络对新主机进行身份验证,并阻止所有未通过身份验证的主机进行订阅。另一个好处是网络中发送的消息更少。
我正在学习在 android 中使用 zeromq 轮询。我正在轮询 android 程序(客户端)中的请求套接字和子套接字。这样这个客户端既可以接收来自服务器的回复消息,也可以接收发布的消息。 我的
在 JeroMQ 中如何使用单个消息发送具有文件内容类型和其他属性的文件。 在客户端: 构建文件消息并发送到服务器 DataInputStream inStrm = file.getContent()
使用 ZeroMQ .Context 和 .Socket 实例,我能够推送/拉取消息 例如,在我的代码下面,用于类似设置的队列: ZMQ.Context context = ZMQ.context(
我正在尝试使用 MATLAB 中的 JeroMQ,通过实现此示例( How to use jeromq in MATLAB ): % Author : Dheepak Krishnamurthy %
简单的问题。为什么在 Java 上“移植”zmq 并将其称为 JeroMQ 是个好主意? 最佳答案 JeroMQ是ZeroMQ社区的官方项目;它是 C++ libzmq 库的完整移植,支持版本 3.2
我想使用我找到的这个库,它是 zeromq 的纯 Java 端口(不是包装器)。 我正在尝试测试它,而它 claims一些不错的数字,我正在执行的测试给出了相当差的结果,它甚至在本地执行(客户端和服务
我是 Zeromq 的新手,对套接字没有那么丰富的经验。 ZeroMQ 套接字是否应该只允许一个套接字将 (bind()) 到一个端口? jeromq 实现允许多个; pyzmq 没有。谁是正确的?
我正在使用 0.4.0 版本的 jeromq 并且我正在尝试使用此 link 中的以下示例但它在 ZMQ.poll(items, 10); 这一行给出了编译错误。看起来最近版本的 jeromq 发生了
在我的代码中,我有一个线程等待 ZeroMQ 端点上的事件,其主循环看起来与此类似: while (externalCondition) { byte[] bytes = subscriber.r
在 C++ ZMQ Publisher 中,我将字符串打包到 message_t 中,如下所示: int main() { zmq::context_t context(1); z
我是一名优秀的程序员,十分优秀!