轉自:http://www.cnblogs.com/mjorcen/p/4479642.html
一、ZeroMQ介紹
ZeroMQ是一個開源的消息隊列系統,按照官方的定義,它是一個消息通信庫,幫助開發者設計分布式和並行的應用程序。
首先,我們需要明白,ZeroMQ不是傳統的消息隊列系統(比如ActiveMQ、WebSphereMQ、RabbitMQ等)。ZeroMQ可以幫助我們建立自己的消息隊列系統,它只是一個庫。
ZeroMQ可以運行於帶x86處理器或ARM處理器的機器上,支持40多種編程語言。
消息隊列,從技術的角度來講,是以先進先出FIFO算法為基礎的隊列技術,它有着良好的數據結構。除此以外,還有優先級隊列、雙端隊列等隊列技術。不管怎么樣,其基本思想是把數據添加到隊列中,接收端准備好以后,從隊列中取回數據。
采用消息隊列技術可以保證無論發生了什么,消息都會被交付到目的地。
消息隊列允許松耦合的組件之間進行異步通信,還提供了堅實的隊列一致性。如果資源不足,會阻止你立即處理發送的數據,你可以把消息放入消息隊列服務器,由消息隊列服務器來存儲數據,直到目的地准備好接收消息。
消息隊列在大規模分布式系統和異步通信中扮演着重要的角色。
二、ZeroMQ特征
1)ZeroMQ很簡單
我們可以做異步I/O操作,ZeroMQ可以在一個I/O線程中把消息隊列化。ZeroMQ的I/O線程是異步的,當處理網絡交通時,它可以幫助我們完成很多剩余的工作。
2)ZeroMQ相當快
Second Life網站有13.4毫秒的端到端延時和高達每秒410萬條消息的處理量。ZeroMQ能使用廣播傳輸協議——它是把數據傳輸到多個目的地的好方法。
3)無代理設計
與其它傳統的消息隊列系統不同,ZeroMQ是無代理式的。傳統的消息隊列系統,通常都有中央消息服務器(Broker),每個節點都連接到這個中央節點,每個節點都通過中央節點與其它節點通信,而不是節點間彼此直接通信。
而ZeroMQ是無代理式的,應用程序彼此可以直接通信,無需通過中間代理Broker。
注意:ZeroMQ不會在磁盤上存儲消息。但是,可以通過使用本地交換文件的方式存儲消息。設置zmq.SWAP。
三、准備條件
OS:CentOS 6.5 x64
ZeroMQ:4.0.4版
四、安裝ZeroMQ
1)下載ZeroMQ
執行命令:
wget http://download.zeromq.org/zeromq-4.0.4.tar.gz
2)解壓ZeroMQ
$ tar zvxf zeromq-4.0.4.tar.gz $ mv zeromq-4.0.4 zeromq $ cd zeromq
3)編譯安裝
$ ./configure ...... checking for gcc... no checking for cc... no checking for cl.exe... no configure: error: in `/home/chuser/zeromq': configure: error: no acceptable C compiler found in $PATH See `config.log' for more details
提示缺少C編譯器,先安裝GCC。
$ sudo yum install gcc
安裝OK!再次執行
$ ./configure ...... checking whether the C++ compiler works... no configure: error: Unable to find a working C++ compiler
提示缺少C++編譯器,先安裝G++。
$ sudo yum install gcc-c++
安裝OK!再次執行
$ ./configure $ make $ sudo make install
ZeroMQ安裝成功!