一、前言
由於項目需要用的rabbitmq的c/c++客戶端,所以嘗試編譯rabbitmq-c。
注:我的機器是Windows7 64位旗艦版,編譯環境是VS2010-x64
二、准備工作
- 下載 rabbitmq-c 源碼包 https://github.com/alanxz/rabbitmq-c/releases/latest
- 下載 CMake2.6或更高版本 http://www.cmake.org/ (本文使用 CMake2.8)
三、安裝
- 安裝CMake
四、編譯
- 運行CMake
- 在Where is the source code 填下載的rabbitmq-c目錄
- 在Where to build the binaries 填編譯生成目錄
- 點Generate按鈕選擇visual studio 10開始編譯
- Build下會生成rabbitmq-c解決方案,打開全編譯,生成的dll和lib文件位於build\rabbitmq-c\librabbitmq\Release
五、Rabbitmq使用必須理解的一些概念
(轉自:http://www.linuxidc.com/Linux/2013-11/92591.htm)
channel:通道,amqp支持一個tcp連接上啟用多個mq通信通道,每個通道都可以被作為通信流。
producer:生產者,是消息產生的源頭。
exchange:交換機,可以理解為具有路由表的路由規則。
queues:隊列,裝載消息的緩存容器。
consumer:消費者,連接到隊列並取走消息的客戶端。
核心思想:在RabbitMQ中,生產者從不直接將消息發送給隊列。
事實上,有些生產者甚至不知道消息是否被送到某個隊列中去了。生產者只負責將消息送給交換機,而交換機確切地知道什么消息應該送到哪。
bind:綁定,實際上可以理解為交換機的路由規則。每個消息都有一個稱為路由鍵的屬性(routing key),就是一個簡單的字符串。一個綁定將【交換機,路由鍵,消息送達隊列】三者綁定在一起,形成一條路由規則。
exchange type:交換機類型:
fanout:不處理路由鍵,轉發到所有綁定的隊列上
direct:處理路由鍵,必須完全匹配,即路由鍵字符串相同才會轉發
topic:路由鍵模式匹配,此時隊列需要綁定要一個模式上。符號“#”匹配一個或多個詞,符號“*”匹配不多不少一個詞。因此“audit.#”能夠匹配到“audit.irs.corporate”,但是“audit.*” 只會匹配到“audit.irs”