问题标签 [netmq]

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 投票
0 回答
199 浏览

python - Netmq 收到发布后崩溃

我们正在做一个 ZMQ PUB/SUB 方法。PUB/SUB 交换是用 dot net (.Net) 编写的,.Net 交换的发布者是用 Python 编写的。当 Python PUB 与 .Net 交换时,它经常崩溃,并出现以下错误:

python代码是一个简单的pub。

0 投票
1 回答
482 浏览

c# - 什么是用于在自定义缓冲区中接收以避免在每个帧/消息上创建新字节数组的 NetMQ API?

我有以下代码:

我想做的,但我在文档中找不到可以避免在每个上创建新字节数组的东西socket.Receive

我怎样才能做到这一点?

0 投票
1 回答
244 浏览

powershell - 从 powershell 使用 NetMQ 时出现异常

我正在使用 Powershell 中的 NetMQ 库,但不断收到以下异常。

环境

我在 PowerShell 中使用它: $pubSocket = New-Object NetMQ.Sockets.ResponseSocket -Args ("@tcp://localhost:5556") 但是它会引发以下异常:

New-Object : Exception calling ".ctor" with "1" argument(s): "Exception of type 'NetMQ.NetMQException' was thrown." At line:1 char:14 + ... pubSocket = New-Object NetMQ.Sockets.ResponseSocket -Args ("@tcp://lo ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [New-Object], MethodInvocationException + FullyQualifiedErrorId : ConstructorInvokedThrowException,Microsoft.PowerShell.Commands.NewObjectCommand

0 投票
1 回答
377 浏览

c# - 为什么 Mono 上的 NetMQ DealerSocket 不向 Debian Wheezy 上的服务器发送消息,但在 Windows 上却发送消息?

我对 Debian Wheezy 上的 Mono 4.8 上的 NetMQ 4.0.0.1 有一些问题。

在我不会停止调用它发送新消息之前,经销商套接字不会发送任何消息。当我将Thread.Sleep( 1000 )在创建任务之间放置时,一切都很好。我想承认一切都在 .Net Framework 4.5 和 .Net Core 1.1 上的 Windows 上运行,没有任何Thread.Sleep().

我有这样的模式: 在此处输入图像描述

我已经添加了调试消息,我可以看到我正在REQ循环中的任务中创建 100 个套接字,并且路由器正在队列中获取请求,而不是通过经销商发送它们,并且 TCP 的另一端没有发生任何事情,直到我会在 REQ 套接字上停止调用发送。每 5 个任务中的一个简单Thread.Sleep()的工作。它看起来像 Poller 错误,或 Dealer 错误,或者我做错了什么。

这是中间框的代码:

这是客户端:

和服务器端:

有人有什么想法吗?

我在想我可能正在使用来自不同线程的套接字,所以我将它打包到 ThreadLocal 结构中,但它没有帮助。比我读到一些与 NetMQ 统一的问题,所以我添加了'AsyncIO.ForceDotNet.Force() ;' 在每个套接字构造函数调用之前,这也没有帮助。比我将我的单声道从 4.4 更新到 4.8 并且它看起来仍然一样。

我检查了任务之间的 Thread.Sleep(100) 是否正在解决问题。它很奇怪

0 投票
1 回答
988 浏览

c# - 如何使用 NetMQ 从服务器向客户端发送 ACK 消息

我正在使用 NetMQ 将消息从许多客户端发送到接收消息并处理它们的服务器。如果我使用pub/sub模式,我可以(ab)使用订阅者套接字并将其用于服务器,客户端将成为发布者(相反的流程,不是吗?)。但是,我无法向客户发送确认消息。

如果我使用该REQ/RESP模式,我可以使用服务器的响应套接字,甚至可以发送一个可以被客户端接收的确认消息。但是,如果服务器错过了来自客户端的消息,我无法重新发送消息(在等待 a 之后timespan),因为我收到异常

Req.XSend - 无法发送另一个请求

- 即使在断开客户端套接字并关闭它之后(它接缝服务器套接字会跟踪它)。

最后,根据文档,我不确定这是否Dealer/Router是正确的模式。由于我很确定我陷入了一个非常常见的情况,是否有任何模式可以使用 NetMQ 实现这个场景?

0 投票
1 回答
1171 浏览

c# - 如何使用 ZeroMQ 解决“NetMQ.AddressAlreadyInUseException”

让我解释一下我是如何从这样一个简单的代码中得到这个异常的,我使用了一个名为 cAlgo 的交易程序,我在其中尝试运行一个 NetMQ 服务器,显然在停止它时,它没有正确关闭,导致端口无法使用,直到我重新启动我的电脑。

我需要一些帮助来恢复这个端口并使其再次可用,我试图清理它但没有成功,我从 ZeroMQ 开始,所以我不熟练。

谢谢,附加的是异常(带有内部 SocketException,每个套接字地址(协议/网络地址/端口)仅使用一次。

在此处输入图像描述

0 投票
0 回答
512 浏览

netmq - 如何检查套接字的传出队列是否为空?

它不是HasOut

我明白,当我发送消息时(SendFrame),并不意味着它真的发送了,而只是排队等待成功发送。

因此,当我想发送另一条消息时,如果没有实际发送第一条消息(对我而言),那么这样做是没有意义的。简而言之——我想在这样的循环中工作:如果传出队列为空,则发送消息,重复。

我知道如何发送消息,但如何检查队列是否为空?

DealerSockect如果这有所作为,我会使用。

0 投票
1 回答
809 浏览

c# - 无法使用 NetMQ 4.x 让 ReadyReceive pub-sub 工作

我创建了 2 个简单的 C# 控制台项目(.net 4.5.2),向每个项目添加了 v4.0.0.1 NetMQ Nuget 包,将每个程序加载到单独的 Visual Studio 2017 社区版中,在包含在OnReceiveReady 回调方法,先启动订阅者程序,再启动发布者程序。订阅者中未触发 ReceieveReady 事件。我究竟做错了什么?即使我选择了 subSocket.Subscribe("") ,我仍然没有收到任何消息。此外,删除/修改 Send/Receive HighWatermarks 也没有改变。谢谢你的帮助!

这是发布者代码:

这是订阅者代码:

0 投票
1 回答
497 浏览

c# - 如何处理带有阻塞套接字的轮询器?

我有单个套接字,它在发送帧时被阻止,我想处理轮询器(以及与之相关的所有内容)。但是,我做不到——在套接字上调用 dispose 会引发异常,而在 poller 上调用 dispose 会完全阻塞。

请注意,我正在使用SendFrame并且可以使用TrySendFrame,但是这个示例的目的是实际阻塞套接字并找到一种方法来清理所有内容。

例子:

使用 NetMQ 3.3.3.4(我现在的主要版本)和 4.0.0.1 进行了测试。

0 投票
0 回答
87 浏览

zeromq - 是否缓存了 SendReady 事件?

根据 doc SendReady,当至少一帧可以无阻塞地发送时触发。好的,当我在此事件的回调中发送一个帧时,它按记录工作,但是当我使用计时器添加一些延迟时,我有这样的效果,看起来像是SendReady被缓存了,并且盲目发送而不检查在通知的那一刻它是否仍然真的。

考虑这样的代码:

输出说:

但是这样的输出应该是(?)不可能的——最后一行说发送失败,但是在我们确认发送至少一帧是可能之前的那一行。

因此,如果此事件被缓存并且不应该 100% 被信任,或者我错过了什么?