ZeroMQ中PUB-SUB模式測試


    因為公司有需求,對程序模塊之間通信效率有較高的需求。之前公司用的通信組件是ActiveMQ,根據網上公布的測試結果顯示其效率比較低, 后來考慮准備在新的項目中開始使用ZeroMQ。看了幾天發現用起來比較簡單,但是不知道怎么用進我們的項目中,加之項目比較着急就擱淺了,轉而選擇了與socketAPI相近的boost庫中的Asio庫,因為本人比較菜,最近測試發現了各種坑!!!各種坑!!!(對Asio不熟悉的童鞋對新項目慎用)

    然后最近就又開始看ZeroMQ,發現網上demo程序不少,但是解釋清楚的很少,所以在這里記錄測試記錄,並督促自己有始有終。官網上有很好的demo程序,我就不貼出來了,要注意的是,demo都是最新的Linux版本的,所以源碼最好也是下載最新的,windows上編譯需要稍微改動。

    ZeroMQ推崇模式編程,第一種請求應答沒什么說的。第二種PUB-SUB模式中,服務端沒什么,對客戶端的配置接口有疑問:

    int zmq_setsockopt (void *s, int option, const void *optval, size_t optvallen);

    參數一:socket句柄;

    參數二:socket的模式,這里因為是客戶端,所以是訂閱模式:ZMQ_SUBSCRIBE;

    參數三:訂閱關鍵字;

    參數四:參數三的長度;

對於參數三,官方文檔:



該接口必須顯示調用,否則為不訂閱,測試結果:
char *filter = (argc > 1) ? argv[1] : "";
rc = zmq_setsockopt(subscriber, ZMQ_SUBSCRIBE, filter, strlen(filter));
不過濾,會訂閱所有信息;

如果
filter = “test ”;
則訂閱以“test ”為開頭的信息,中間出現關鍵字的信息不會接收到,(!!測試中,對於關鍵字中的空格“ ”,linux完全匹配,windows下不同環境測試結果不一致,待驗證);

到這里PUB-SUB模式在一對多的情景中,可以使用了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM