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 構成の小さなメイン プログラムがありました。

私は以前、この 2 つのレイヤーを改善して文書化しようとしましたが、メンテナーによって拒否されたパッチで遊んでいました。その後、外部アプリを zdevices プロジェクトに移動し、より柔軟な構成などを行いました。最終的に、これらは採用されず、放棄されました。zdevices は、構成に libzfl (および XML) を使用しました。libzfl のほとんどは、CZMQ API にリファクタリングされました (多くの人が使用しています)。

その後、Sustrik は 0MQ/3.0 から zmq_device 呼び出しを削除することを決定しました。これについては、「less is more」引数を使用してリストを説明しました。かなり弱い理由で、多くの既存のアプリケーションを壊したので、人々はこれをあまり好きではありませんでした。

そのため、XS フォークの後、zmq_device を 0MQ/3.1 にパッチを適用しました。C++ API はコア ライブラリの一部ではありませんが、それを使用している人は誰でも、デバイス メソッドをパッチに戻すことができます。

HTH。

于 2012-04-27T07:05:22.870 に答える
6

AFAIK、現在3.xで使用できるデバイスはありませんが、Readmeによると

少ないほうがいいですね

ビルド済みのデバイスとzmq_device()が削除されました。別のプロジェクトとして利用できるようにする必要があります。

ちょうど1年前、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 に答える