4

我注意到该设备不是 3.0 api 的一部分......我用什么代替?

zmq::device (ZMQ_QUEUE, clients, workers);

我发现设备已经移到这里了:https ://github.com/zeromq/libzfl

4

3 回答 3

7

有点糊涂了,故事就讲到这里吧。

当我继承0MQ/2.x的维护时,它有一个zmq_device()函数,和一组外部设备应用程序,带有XML配置的小主程序。

我之前曾尝试改进和记录人们正在使用的这两层,维护者拒绝了补丁。然后,我们将外部应用程序移至 zdevices 项目,配置更灵活等。最终这些应用程序没有被采用并被放弃。zdevices 使用 libzfl(和 XML)进行配置。大多数 libzfl 都被重构为 CZMQ API(人们经常使用它)。

Sustrik 然后决定从 0MQ/3.0 中删除 zmq_device 调用,我用“少即是多”的论点解释了该列表。人们并不真正喜欢这个,因为它破坏了很多现有的应用程序,原因很弱。

所以在 XS 分叉之后,我将 zmq_device 修补回 0MQ/3.1。C++ API 不是核心库的一部分,但欢迎使用它的任何人将设备方法修补回其中。

HTH。

于 2012-04-27T07:05:22.870 回答
6

AFAIK,目前没有可用于 3.x 的设备,但根据自述文件

少即是多

预建设备和 zmq_device() 已删除。应作为单独的项目提供。

就在一年前,pieterh在网站上写了以下关于移除设备的原因:

它主要是关于能够独立于 libzmq 核心来改进设备层。作为 libzmq 核心的一部分,很难改进这些设备层,主要是因为核心 API 被认为是神圣的,而其他东西则不然。即除了主要版本之间不涉及核心API。因此,如果设备是核心的一部分,则不会触摸设备,除非在主要版本之间。

于 2012-04-26T20:26:20.257 回答
1

现在只需使用 C API:

zmq_device (ZMQ_QUEUE, clients, workers);
于 2012-09-14T06:00:19.863 回答