如何使用C#绑定设置ZMQ_ROUTER_MANDATORY?

时间:2014-10-26 19:25:28

标签: c# zeromq

我正在使用ZeroMQ(x86)2.2.5的官方.NET绑定,并且无法弄清楚如何设置此套接字选项。任何人都可以对我有所了解吗?

2 个答案:

答案 0 :(得分:0)

CLRZMQ已经过时,NetMQ(https://github.com/zeromq/netmq)现在是Windows的官方堆栈。

在NetMQ中使用socket.Options.Mandatory = true;

答案 1 :(得分:0)

CLRZMQ 不是已过时(请参阅zeromq.org)。两者之间的关键区别在于方法:

  • CLRZMQ是绑定项目,实际上在后台使用libzmq库(它是libzmq库的.NET包装器);
  • NetMQ是ZeroMQ的.NET本地端口,这意味着它不会包装现有的libzmq,但会在纯C#中重写它

使用哪一个?嗯,没有简单的答案。在选择时,请记住以下几点:

  • 说到可移植性 - NetMQ到目前为止是胜利,特别是因为有NetMQ的.NET Core版本。使用NetMQ可以更轻松地部署 - 没有本地库需要担心(x64 / x86等)。
  • 另一方面,NetMQ实际上重写了所有内容这一事实对我来说有点可怕 - 总是存在一些风险,即某些内容未能从原始代码中精确镜像,并且可能导致与其他ZeroMQ节点不兼容。还有人质疑NetMQ将如何快速实现原始库中的新功能。
  • 性能。目前我还不知道哪个图书馆在表演中获胜,但这绝对是选择时要考虑的事情。 libzmq应该比任何托管代码快得多,但是在CLRZMQ和libzmq编组之间的通信必须进行,所以我真的无法预测哪个库会在速度上获胜。