c# - NetMQ 多个发布者
问题描述
我正在运行一个 pub-sub 设置,该设置非常适用于单个发布者和多个订阅者。
但是我现在希望有几个发布者发布到同一个“频道”,当我尝试这个时,我第二次尝试绑定我得到一个地址已经使用的错误。
为什么我不能有第二个出版商?
这适用于大约 250K 消息/秒的高吞吐量应用程序,快速阅读 xPub-xSub 表明中介会增加开销。
private void BackgroundProcess()
{
int msgSeqNum = 0;
using (var server = new PublisherSocket())
{
server.Options.SendHighWatermark = 1000;
server.Bind(Connection);
var address = Key;
string txt;
while (true)
{
if (O.TryTake(out txt, 60000))
{
msgSeqNum++;
server.SendMoreFrame(address).SendMoreFrame(msgSeqNum.ToString()).SendMoreFrame(DateTime.UtcNow.ToString("yyyyMMddTHHmmssffffff")).SendFrame("Whatever");
}
}
}
}
解决方案
Netmq 可以使用一对一的套接字集或一对多的套接字集。您已经接近了,您将需要 xpub xsub 作为代理 netmq 实际上为此提供了一个代理。
https://netmq.readthedocs.io/en/latest/xpub-xsub/
至于为什么,这是底层tcp层的限制,不能将多个tcp监听器绑定到单个端口afaik
推荐阅读
- webpack - webpack eslint-webpack-plugin 抛出错误
- r - 计算和呈现相对值
- jquery - 使用 jquery 和 ajax 插入多个复选框值,但只插入一条记录
- agora.io - 无法连接到 Agora 服务器
- c - Doxygen 结构文档
- python - 为什么我无法从 tkinter 获取条目值作为文件名....我正在尝试使用给定名称保存图像
- c++ - C++ 使用 char 类型打印字母表,如 Excel 公式 =CHAR(CODE(A1)+1),单元格 A1 的值为
- reactjs - 如何使用 Laravel Sanctum 和 React 修复 401 Unauthorized 错误?
- python - 将numpy数组转换为字典的优雅方法
- html - CSS总是显示列表的最后一个图标被裁剪为一半