惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Attack and Defense Labs
Attack and Defense Labs
The GitHub Blog
The GitHub Blog
C
Check Point Blog
博客园_首页
MongoDB | Blog
MongoDB | Blog
N
Netflix TechBlog - Medium
F
Full Disclosure
Microsoft Security Blog
Microsoft Security Blog
爱范儿
爱范儿
Recent Announcements
Recent Announcements
阮一峰的网络日志
阮一峰的网络日志
G
GRAHAM CLULEY
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
T
Threat Research - Cisco Blogs
C
Cybersecurity and Infrastructure Security Agency CISA
V
Vulnerabilities – Threatpost
K
Kaspersky official blog
博客园 - 司徒正美
S
Schneier on Security
T
The Exploit Database - CXSecurity.com
Project Zero
Project Zero
云风的 BLOG
云风的 BLOG
Cisco Talos Blog
Cisco Talos Blog
Know Your Adversary
Know Your Adversary
雷峰网
雷峰网
V
V2EX - 技术
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Spread Privacy
Spread Privacy
罗磊的独立博客
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
S
Security Affairs
SecWiki News
SecWiki News
Schneier on Security
Schneier on Security
O
OpenAI News
Jina AI
Jina AI
PCI Perspectives
PCI Perspectives
Cyberwarzone
Cyberwarzone
Y
Y Combinator Blog
Apple Machine Learning Research
Apple Machine Learning Research
B
Blog RSS Feed
I
InfoQ
D
Docker
P
Palo Alto Networks Blog
Recorded Future
Recorded Future
M
MIT News - Artificial intelligence
博客园 - Franky
B
Blog
Scott Helme
Scott Helme
博客园 - 叶小钗
D
DataBreaches.Net

博客园 - 水色天空

用docfx生成c#项目API的简洁教程 wpf datagrid鼠标穿透 OxyPloot设置X轴时间DateTimeAxis WPF中MVVM模式下ComboBox绑定,无法更新selectedItem的解决方案 WPF设置DatePicker日期格式之卡Bug大法 - 水色天空 WPF程序自动重启 InstallShield打包.net项目无法包含数据库、配置文件等 handycontrol中NumericUpDown无法显示自定义错误提示的解决办法 DataGrid代码生成列居中问题 Chapter 2 - Sockets and Patterns【选译,哈哈】 Part 9 High-Water Marks Chapter 2 - Sockets and Patterns【选译,哈哈】 Part 9 Zero-Copy Chapter 2 - Sockets and Patterns【选译,哈哈】 Part 8 Node Coordination Chapter 2 - Sockets and Patterns【选译,哈哈】 Part 6 Multithreading with ZeroMQ - 水色天空 Chapter 2 - Sockets and Patterns【选译,哈哈】 Part 7 Signaling Between Threads (PAIR Sockets) Chapter 2 - Sockets and Patterns【选译,哈哈】 Part 5 Handling Interrupt Signals - 水色天空 WPF绑定RadioButton的标准做法 解决.net reactor加密后的dll,在其它电脑无法运行的问题 - 水色天空 函数返回值的一些规则 Chapter 2 - Sockets and Patterns【选译,哈哈】 Part 4 Handling Errors and ETERM
Chapter 2 - Sockets and Patterns【选译,哈哈】 Part 9 Missing Message Problem Solver
水色天空 · 2021-09-26 · via 博客园 - 水色天空

Missing Message Problem Solver

 下面是这张图表的总结:

在SUB套接字上,使用ZMQ_SUBSCRIBE的zmq_setsockopt()设置订阅,否则将得不到消息。因为您通过前缀订阅消息,如果您订阅“”(空订阅),您将获得所有内容。

如果您在PUB套接字开始发送数据之后启动SUB套接字(即,建立到PUB套接字的连接),您将丢失它在建立连接之前发布的所有数据。如果这是一个问题,请设置您的体系结构,使SUB套接字首先启动,然后PUB套接字开始发布。

即使同步了SUB和PUB套接字,仍然可能会丢失消息。这是因为在实际创建连接之前,不会创建内部队列。如果你可以切换绑定/连接方向,让SUB套接字绑定,PUB套接字连接,你可能会发现它的工作方式更像你期望的。

如果您正在使用REP和REQ套接字,并且没有坚持同步send/recv/send/recv命令,ZeroMQ将报告错误,您可能会忽略这些错误。那样的话,就会显得你在丢失信息。如果您使用REQ或REP,请坚持send/recv顺序,并且始终在实际代码中检查ZeroMQ调用的错误。

如果您正在使用PUSH套接字,您将发现第一个要连接的PULL套接字将获取不公平的消息共享。消息的准确旋转只发生在所有PULL套接字都成功连接时,这可能需要一些毫秒。作为PUSH/PULL的替代方案,为了降低数据速率,可以考虑使用ROUTER/DEALER和负载平衡模式。

如果您正在跨线程共享套接字,请不要这样做。它会导致随机的奇怪,和崩溃。

如果您正在使用inproc,请确保两个套接字处于相同的上下文中。否则,连接端实际上会失效。同样,先绑定,再连接。Inproc不是像tcp那样的断开连接的传输。

如果您正在使用ROUTER套接字,那么通过发送错误的标识帧(或忘记发送标识帧),很容易意外地丢失消息。一般来说,在ROUTER套接字上设置ZMQ_ROUTER_MANDATORY选项是个好主意,但在每次发送调用时也要检查返回代码。

最后,如果您真的不能找出问题出在哪里,那么就做一个重现问题的最小测试用例,并向ZeroMQ社区寻求帮助。