问题标签 [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 回答
715 浏览

c# - NetMQ中如何识别传入连接的物理地址?

NetMQ 的路由器经销商示例中,我们看到客户端可以设置自己的身份。这对于记录目的很有用。但是,如果我只控制服务器(路由器)的代码而不是客户端(经销商)的代码,该怎么办?如果某些客户端不费心以对我的服务器有意义的方式设置身份怎么办?当客户没有在消息或身份中明确提供给我时,我如何在我的日志中包含物理地址?

如果你只知道基于 ZeroMQ 的其他一些实现的答案,我会很想听听它,但最终我想要一些可以在 NetMQ 中完成的东西。

0 投票
0 回答
112 浏览

c# - 为什么 Azure Service Fabric 不传递所有消息,而本地集群却传递?

我正在使用 C# NetMQ 库。我使用 Service Fabric 有状态服务在 Azure 中部署了生产者和消费者服务。我对两个服务进行了分区,以便每个服务都有两个实例。

生产者实例各自创建一个PublisherSocket并调用Bind。第一个绑定到 (eg) tcp://10.0.0.1:9501,第二个绑定到tcp://10.0.0.2:9502. (端口保持唯一,因为 SF 可能会重新平衡两个实例以在同一物理节点上运行。)

他们发布到一些任意主题(与这个问题无关)。(我用几帧数据调用SendMultipartMessage并传递它。)NetMQMessage

消费者实例各自创建一个SubscriberSocket和调用Connect。它们每个都连接到两个生产者地址。然后他们调用Subscribe并传递一个空字符串""作为主题。这应该会导致他们使用任一生产者发送的所有消息。

预期成绩:

  1. 两个生产者绑定,两个消费者连接/订阅。
  2. Producer1 发送消息 A,Producer2 发送消息 B。
  3. Consumer1 同时接收 A 和 B。
  4. Consumer2 同时接收 A 和 B。

本地 SF 集群上的实际结果:一切都符合预期。两个消费者都收到来自两个生产者的所有消息。

在 Azure 上运行的 SF 集群的实际结果:

  1. 绑定/连接/订阅都发生,没有异常或明显错误。
  2. 生产者发送消息没有错误。
  3. 两个消费者都从 Producer1 接收消息。
  4. 两个消费者都没有收到来自 Producer2 的消息。

笔记:

  • 生产处于循环中,所以这不是一些奇怪的启动问题。
  • 增加生产者/消费者的数量(例如每个 5 个实例)导致第一个生产者的消息总是被消费,然后其他生产者的一些消息被消费。大约一半的消息被消耗,但我看不到任何明显的模式。

问题:

  1. 在 Azure 中运行的 Service Fabric 群集与 ZeroMQ 的组合是否会导致 ZeroMQ 问题?
  2. 我应该设置任何 ZeroMQ 套接字选项吗?
  3. SF中有什么我可以改变的吗?

任何想法表示赞赏。

0 投票
1 回答
1670 浏览

c# - 当前上下文中不存在名称“”

您好我无法解决 OnLoginSuccess()pubSocket.SendMoreFrame("TopicA").SendFrame("Hello");变量中的问题,因为错误名称 '' 在当前上下文中不存在。

我知道我需要将变量更改为 public,但是当我 static public PublisherSocket pubSocket = new PublisherSocket(); 在类的开头添加时,代码不能正常工作。另外,问题是我需要在 Main() 中设置一些选项(.Options,.Bind)。

0 投票
2 回答
531 浏览

c# - ZeroMQ (NetMQ) TCP 传输可以在同一进程中的发布者和订阅者之间使用吗?

我认为这个问题真的说明了一切。

对于一些背景知识,我有一个订阅者,我正在尝试为其编写一些测试。为了做到这一点,我从测试中启动了一个发布者,指定tcp://localhost:[port]为地址。发送消息时,订阅者不会收到它。下面是一些示例代码来演示:

如果我将协议更改为,inproc://那么一切都很好。但是,我不想在我的测试中这样做,因为我还想测试一个监视器套接字,这不会引发inproc://连接事件(据我所知)。

请注意,我在 C# 代码中使用 NetMQ(在 .NET Framework 4.6.2 下运行)。

0 投票
1 回答
309 浏览

xamarin.forms - 如何在 Xamarin 表单中设置 PUB/SUB NetMQ

我有一个作为发布者运行的 Windows 服务,我正在尝试将 Xamarin Forms 设置为订阅者。下面的代码在控制台应用程序或 LinqPad 中运行良好,但是当复制并粘贴到 Xamarin 表单中时,SubscriberSocket 只是不响应来自服务器的消息。

你知道怎么接线吗?

我正在使用 NetMQ v 4.0.0.1

我也尝试过启动后台线程,Task.Factory.StartNew(() => StartPubSubSocketSubscriber(), TaskCreationOptions.LongRunning);但它对来自发布者的消息同样没有响应。

谢谢你。

PS.:删除subSocket.Connect("tcp://localhost:5556");

0 投票
1 回答
63 浏览

c# - 我应该锁定订阅者吗?

是否有必要在 NetMQ 中作为订阅者顶部“锁定”

我想是的,我在下面做的点似乎是正确的地方吗?

0 投票
1 回答
1007 浏览

c# - ZeroMQ 服务器/客户端类型的正确模式

我有一台服务器需要获取指令以在另一台机器上为客户端运行进程。

客户端发送作业消息,服务器处理作业,然后发送回结果。

我尝试使用 NetMQ 请求响应模式(见下文)

这适用于 1 个客户端,但如果第二个客户端在前一个客户端作业完成之前发送请求 - 我收到错误消息。

我真的需要能够接收来自客户的临时消息,并在完成后发送结果。显然,我使用了错误的模式,但阅读 ZeroMQ 文档并没有突出显示更合适的模式。

0 投票
1 回答
780 浏览

c# - NetMQ 多个发布者

我正在运行一个 pub-sub 设置,该设置非常适用于单个发布者和多个订阅者。

但是我现在希望有几个发布者发布到同一个“频道”,当我尝试这个时,我第二次尝试绑定我得到一个地址已经使用的错误。

为什么我不能有第二个出版商?

这适用于大约 250K 消息/秒的高吞吐量应用程序,快速阅读 xPub-xSub 表明中介会增加开销。

0 投票
0 回答
443 浏览

c# - NetMQ 的性能限制

我正在从我的 10G 网络上的各个地方发送消息。我正在使用发布/订阅模式。

我发送的消息使用 zeroFormatter 进行序列化,长度约为 270 字节。

一旦我开始每秒发送超过 150K 的消息,我注意到订阅者开始错过消息。

我如何计算出我可以发送的限制是多少?

编辑1:

我发送的速度不到 10 亿比特/秒,这是我网络容量的十分之一。在此之后,我开始错过消息。这会是由于CPU问题吗?发送者或接收者似乎都没有被高度利用......

0 投票
0 回答
292 浏览

pyzmq - NetMQ DealerSocket 接收消息失败

我的 Python3 服务器代码:

我的 C# 客户端代码:

现在,C# 客户端不会收到该消息。

但是,如果我将 Python 套接字设置为zmq.DEALER,客户端将接收消息,但会将build_0其视为多部分消息的一部分,而不是发送者 ID。我需要实际接受该 ID,因为会有多个客户。具有标识的 Python 经销商套接字build_0可以与服务器示例通信。

如何设置 NetMQ DealerSocket 以在正确使用身份时接受来自 pyzmq 路由器套接字的任何消息?