我有一个应用程序将epgm PUB套接字上的消息发送到一个或多个epgm SUB套接字.事情大多数都有效,但是如果订阅的应用程序留下足够长的时间,通常会丢失一条消息或一些消息.(我的消息有序列号,所以我可以判断是否有任何缺失或乱序.)根据我对ZMQ文档的阅读,我会认为epgm的"可靠多播"性质会阻止这种情况发生,在SUB套接字获得一条消息之后,它保证在关闭之前一直保持这种状态,或者直到主要的网络故障(即连接被最大化).
无论如何,这就是上下文,但问题只是标题:ZMQ对epubm的PUB/SUB有什么可靠性保证(如果有的话)?
我有一个应用程序,周期性地需要发送其当前状态的快照,当前状态将由大约500,000个64字节消息表示.使用ZMQ,我很难快速可靠地发送和接收这么多消息.
我一直在使用PUB/SUB而不是tcp这样做,但是我不会拘泥于模式或协议,只要它能完成工作.在我的实验中,我专注于使用发送和接收高水位标记,发送和接收缓冲区设置,以及向发送循环添加一些睡眠以尝试将其减慢一点.对我来说设置似乎相当慷慨(500K HWM,10MB缓冲区)并且仅使用环回连接,消息仍然不是一直被接收的.
我对这些或其他调整参数的适当设置感兴趣,更广泛地了解如何推断各种设置将产生的效果.
一些可能有助于提供适当答案的进一步细节:
分布是一对多.预计接收人数约为20人.
每条消息代表一组关于不同金融工具的信息,所有信息都同时被观察到.在我看来,可以将它们组合成一个大消息(所有消息的集合在逻辑上构成一个完整的快照)和保持它们分开(客户可能只对某些仪器感兴趣,并且我认为这将有所帮助)更容易过滤掉它们).
消息的预期频率基本上不会快于每20毫秒,并且不会慢于5秒.我实际降落的地方可能会受到性能考虑因素的影响(即,我的服务器实际上可以将消息抽出多快以及哪种数据速率对客户来说是压倒性的).
我正在转换一些应用程序代码以使用NodaTime类而不是System.DateTime.我的应用程序的一部分使用PropertyGrid控件允许用户编辑包含LocalDate和Instant的类.在不更改任何内容的情况下,PropertyGrid可以显示属性,但它们不再可编辑.允许用户编辑这些字段的最佳方法是什么.
为了便于说明,我们可以使用此类作为我想要显示和编辑的事物类型的代表:
public class User
{
public string Name { get; set; }
public LocalDate BirthDate { get; set; }
public Instant NextAppointment { get; set; }
}
Run Code Online (Sandbox Code Playgroud) 我在一些地方找到了ZMQ的一些内部日志记录功能的参考资料.我认为可能存在的功能是能够连接到inproc或ipc SUB套接字中的任何一个或两个,并侦听提供有关ZMQ内部状态信息的消息.在调试分布式应用程序时,这非常有用.例如,如果邮件丢失/被丢弃,这可能揭示了一些光,为什么他们被丢弃.
最明显的一点是:http : //lists.zeromq.org/pipermail/zeromq-dev/2010-September/005724.html,但这里也提到了:http://lists.zeromq.org/ pipermail/zeromq-dev/2011-April/010830.html.但是,我还没有找到任何此功能的文档.
某种日志记录功能真的可用吗?如果是这样,它是如何使用的?
我有一个.NET应用程序,我需要从另一个.NET应用程序启动到自己的进程.如果我只关心它在Windows上工作,那很容易,我可以使用System.Diagnostics.Process.Start,指定我的exe的路径,我很高兴.
诀窍是,这是一个MonoDevelop插件,所以我需要这样做是一种跨平台工作的方式,在Mac和Linux上你不能指望操作系统知道如何处理.NET程序集没有一些帮助(即调用mono myapp.exe).
由于这是MonoDevelop插件,因此可以接受使用Mono或MonoDevelop库的答案.
解析"下午1:15"很容易:
var pattern = LocalTimePattern.CreateWithInvariantCulture("h:mm tt");
var time = pattern.Parse("1:15 pm").Value;
Run Code Online (Sandbox Code Playgroud)
但是,这不适用于"1:15 PM","1:15 PM"或"1:15 pm"的类似表格
是否内置支持其他形式的am/pm说明符,还是需要使用字符串预处理进行处理?
如何更新包含需要跨版本保留的数据的Java Card小程序?尽管我可以告诉我更新applet是通过删除它然后安装新版本完成的,这似乎也会删除与应用程序关联的任何持久数据.
作为一个具体的例子,假设我正在编写一个身份验证和加密applet.applet的版本1将在安装时生成受硬件保护的密钥,并支持签名消息,但不加密它们.假设我然后想要发布也支持加密的版本2,并且可以使用版本1创建的密钥.为了实现这一点,我需要在版本1和版本2中做什么?
除了纯Java卡之外,我对使用GlobalPlatform机制的解决方案持开放态度.