问题标签 [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 投票
1 回答
1222 浏览

netmq - 使用 netmq poller 的性能影响

在以下代码中,我使用 netmq 推/拉套接字发送和接收 100000 条消息。我首先尝试在我的拉插座上使用 ReceiveFrameString(ReceiveSimple 方法)进行简单的阻塞调用,然后我尝试使用轮询器来做同样的事情(ReceiveWithPoller 方法)。

使用轮询器对发送/接收消息所需的时间有重大影响。我试图弄清楚为什么我自己使用 dotTrace 并且我发现花费大量时间等待 Socket.Select 执行。

有人可以确认或解释这种差异吗?

0 投票
2 回答
248 浏览

c# - 通过 nuget 将 NetMQ 安装到 xamarin 项目时出错

我试图将 NetMQ 安装到我的 xamarin 应用程序中。

因为 NetMQ 依赖于 AsyncIO,所以无法安装此包并显示以下错误:

我怎样才能重新解决这个问题?

0 投票
1 回答
1051 浏览

c# - 在 Xamarin 中使用 ZeroMQ

我有一个由服务器和客户端组成的应用程序。

服务器是 C/C++ 应用程序,客户端是面向 Windows、Android 和 iOS 的跨平台 Xamarin 应用程序。

服务器部分和客户端部分使用 ZeroMQ 消息进行通信。

我尝试了当前的 c# 实现,例如 NetMQ 和 clrzmq,但它们不能在 Xamarin 中使用。

您知道在 Xamarin 中使用 ZeroMQ 的最简单方法吗?

0 投票
2 回答
775 浏览

c# - 在 Visual Studio 中未检测到添加的参考

尝试安装 netmq vis nuget 时,出现以下错误:

问题是 netmq 依赖于 AsyncIO。安装时,nuget 发现该程序集与.Net 4.5 不兼容。

所以nuget安装AsyncIO失败,然后安装netmq失败。

所以我从 Github 下载了 AsyncIO Source 并使用 .Net 4.5 在本地构建它。

之后,添加了本地构建的 AsyncIO 的 dll 作为我项目的参考。

理论上,使用 nuget 应该可以成功安装 NetMQ。因为我添加了对 AsyncIO 的所需引用。

但是在尝试重新安装 NetMQ 时,我得到了同样的错误:

并且 nuget 没有检测到我在项目中添加了“AsyncIO 0.1.18”。

如何让 nuget 检测到我在项目中添加了这个引用?

0 投票
2 回答
762 浏览

asp.net-web-api - ZeroMQ / NetMQ:PushSocket.SendFrame 不工作

我正在尝试使用 NetMQ 发送“即发即弃”类型的消息。我不在乎等待回复。这是用于日志记录的,我更关心性能而不是确定收到我的消息,而且我特别不希望我的 Web 应用程序在日志记录服务器关闭时挂起。此客户端代码位于 Web api 应用程序中,如果这很重要的话。

我的 web api 客户端上有以下代码:

此代码有效。但如果我省略 Thread.Sleep,服务器将永远不会收到消息。这样做的正确方法是什么?我假设它不是 Thread.Sleep。

0 投票
2 回答
1265 浏览

zeromq - NetMQ 为什么 Req-Rep 需要“SendReady”?

我有一个问题我设法解决了......但是我有点担心,因为我不太明白为什么解决方案有效;

我正在使用 NetMQ,特别是具有多个套接字的 NetMQ 轮询器,其中一个是 REQ-REP 对。

我有一个请求队列,这些请求队列被排成请求,服务器根据需要处理每种请求类型并发回适当的响应。这一直没有问题,但是当我尝试添加其他请求类型时,系统按预期停止工作;会发生的是请求将到达服务器,服务器将发送响应......而客户端将不会收到它。在服务器关闭之前,客户端不会收到消息(异常行为!)。

我一直在使用在发送请求之前设置的标志来管理 REQ-REP 对,并在收到回复后重置。我设法通过仅在 REQ 套接字的“SendReady”事件中触发回复来解决这个问题——这自动修复了我的所有问题,但是我在文档中找不到任何东西告诉我为什么套接字可能没有处于“发送就绪”状态,或者这实际上是做什么的。

任何可以解释为什么现在有效的信息都会很棒:)

干杯。

编辑:来源

客户:

“订阅”作为 UI 的单独线程运行

服务器:

0 投票
1 回答
455 浏览

c# - AsyncIO.ForceDotNet.Force() 导致 Windows XP 上的内存泄漏

环境

  • 生产中的操作系统:Windows XP SP3
  • IDE:Microsoft Visual Studio 2013 终极版
  • 目标框架:.NET 框架 3.5
  • 网络MQ:3.3.1
  • 异步IO:0.1.18
  • 语言:C#

我们需要在 Windows XP SP3 上使用简单的 REQ REP 套接字运行 NetMQ 应用程序。我们从 Issue #412 中了解到,在 Windows XP 上运行时,我们需要调用 AsyncIO.ForceDotNet.Force(); 在使用 NetMQ 之前。

我们开始运行我们的应用程序一段时间(约 3 分钟)后发现,由于我们每秒发送大量消息(每 5 毫秒 1 条消息或每秒 12,000 条消息),我们看到内存泄漏的速率约为3MB/秒。我们的生产机器只有 1 GB 的 RAM,很快就会导致我们的应用程序崩溃。

下面的代码很好地重现了泄漏。要查看泄漏,您可以在任何 Windows 操作系统(7、8 或 10)上运行它;不需要 Windows XP SP3(但没有 AsyncIO.ForceDotNet.Force(),NetMQ 不能在 Windows XP SP3 上运行)。

客户端代码(阻止我们在生产中部署应用程序的有问题的代码)

相应的服务器代码(也会泄露)

客户端应用程序的内存配置文件

0 投票
1 回答
1196 浏览

c# - 记录消息总线 API?

在过去的几天里,我一直在寻找某种方法来记录我正在研究的微服务架构的 API。首先,我将简要介绍一下该项目:

  • 用 C#、.NET 4.6.1 编写
  • 使用带有 x-pub/x-sub 代理的 NetMQ 作为“消息代理”
  • 所有通信都是序列化为 JSON 的纯 C# 对象
  • 有些客户端是浏览器中的 JavaScript,有些是 .NET 应用程序

简而言之,我想知道其他人如何记录发布到他们的消息总线的模型。我见过很多帮助记录 REST 调用的项目(如 Swagger),但我们没有使用 REST。我们的应用程序几乎完全基于事件,使用 JSON 进行发布-订阅消息传递。

我的第一个想法是使用 JSON-Schema 记录 JSON,并使用工具将其转换为格式良好的 API 文档。这可能没问题,但令我困扰的是,似乎没有任何工具可以将模式生成自动化作为构建过程的一部分。如果我们的模型与 API 文档不同,我希望它是一个构建错误。更好的是,如果有某种方法可以在构建过程中自动生成基本文档,那么文档可以保持同步。

你们是怎么做到的?缺少特定于支持 REST 的消息总线架构的文档工具,这让我质疑我们使用基于消息队列的消息传递架构的决定。:)

0 投票
1 回答
612 浏览

c# - 处理 NetMQ 套接字后无法重用端点

在我的应用程序中,我正在创建和处理 NetMQ 套接字。我注意到在处理绑定到该端点的前一个套接字后的一段时间内我无法绑定到该端点。一个最小的例子:

Linger选项设置为 0,但在第二次绑定之前我仍然需要等待(在我的实验中最多几秒钟)。

我可以添加一条Thread.Sleep或其他一些延迟指令,但这既不稳健也不优雅。

这是一个错误吗?如果没有,确保我已经可以绑定到端点的正确方法是什么?

0 投票
2 回答
1429 浏览

c# - 使用 NetMQ 多部分消息发送大对象的性能问题

我在 C# (NetMQ) 中使用以下代码发送大对象:

如果在高流量(例如每秒 10MB 消息)中使用此代码,它将占用 90% 的 CPU 使用率。经过一番研究,我尝试了以下两个代码。首先,我删除了第一帧(“批量发送”):

令人惊讶的是,性能得到了改善。其次,我重新排列了两个框架。我的意思是将大框架移到第一个。如下所示:

再次令人惊讶的是,性能得到了改善!

有什么问题?我怎样才能提高性能?在 netmq 上使用 zproto 怎么样?是否有任何适当的文件?