抄了那么久的《kafka權威指南》,開始實操了,按照書本的介紹,kafka本身提供針對Java的原生API,其它語言如果需要使用kafka,那么就需要通過第三方庫來做了,對了再書中一直提及的kafka官方文檔,在網站中的DOCUMENTATION里。在kafka的官網上找到Clients,點擊進入,此頁介紹了一下各語言的推薦庫,如下:
好了,接下來要做的事情就是點擊C++那一項,到頁面指示的網址去下載庫即可。官方網站上一共推薦了5種C++庫,本次試驗 選擇librdkafka,因為它支持的kafka版本比較多。
1.下載librdkafka庫的源碼,並在windows系統下進行編譯(使用VS2015)
librdkafka的API文檔地址:https://docs.confluent.io/2.0.0/clients/librdkafka/dir_b60aae235eacf49413d63ea05b937558.html。在librdkafka庫的下載頁有對應的編譯要求,如下圖所示:(我在這篇文章里講的是編譯為64位的庫,編譯32位庫也可以按照這個步驟進行操作,但對應的軟件要安裝成32位的,下載地址是:https://github.com/edenhill/librdkafka)
注:將源碼包解壓后可以找到win32文件夾,這里面就是VS的解決方案(.sln文件 sln:solutions),但是現在還無法編譯,因為它需要依賴openssl。
下載源碼的時候注意一下分支的選擇:
選擇release,一般master分支是正在開發中的分支,里面可能會有一些bug或者未經過測試的新代碼。在正式使用或者研究的時候使用release下的源碼包即可。
1.下載並安裝ActivePerl,下載地址:https://www.activestate.com/activeperl,安裝后可以執行perl命令即可,這個在接下來編譯openssl的時候會用到
安裝完后,在Perl的安裝目錄下的eg文件夾里(我的是:C:\Perl64\eg)打開windows的命令行工具,如果出現下圖,說明你的Perl是安裝成功的。因為openssl的配置是用Perl寫的。
或者cmd,在命令行中輸入perl -v,如下圖則表示安裝成功:
2.安裝dmake,如果沒有dmake的話,編譯openssl會提示你的機器沒有安裝dmake。
dmake、cmake、nmake、gmake、make。
gmake:就是linux下的GNU make,gmake是GNU make在其它操作系統下的移植版,但是別的平台上,一般make這個名字被占用了,所以就起了個gmake的名字。windows下自帶的make叫做nmake。如果你使用nmake的時候,發現命令行提示nmake不是內部命令,那么需要添加環境變量,環境變量是 :VS的安裝目錄/VC/bin。
dmake是一款跨平台的編譯工具。dmake是一款與GNU make類似的編譯工具,Dmake是同GNU Make類似的一個工具。其命令格式自成一體,但是可以適用於Linux, Solaris, and Win32 and other platforms。Dmake有一個變種,被OpenOffice.org使用。dmake 是一個命令行工具,與 make(1) 兼容。dmake 能夠以網格、分布、並行或串行模式生成目標。如果使用的是標准 make(1) 實用程序,在對 makefile 進行任何更改時可以毫不費力地過渡到使用 dmake。dmake 是 make 實用程序的超集。
cmake是另一款跨平台的編譯工具。 Visual Studio 的 .sln,Xcode 的 .xcodebuild 文件,依賴現有編譯工具 (make, nmake, vcbuild, xcodebuild) 來編譯。
在windows下安裝dmake工具:
圖 VS2015 命令行工具
打開圖中的VS2015開發人員命令提示,進入VS的命令行工具,然后執行命令:ppm install dmake。如果出現如下錯誤:ppm install failed: DBD::SQLite::db selectrow_array failed: database disk image is malformed,那么刪除路徑:C:\Users\Admin\AppData\Local\ActiveState\ActivePerl 下的文件(和ppm有關的文件)即可。
如上圖,第一次安裝dmake失敗,經過上面講的處理方式處理之后,安裝成功。
要編譯openssl源碼的話,建議詳細閱讀源碼包里的INSTALL文件。
3.下載並安裝64位的openssl。(因為本次的目的僅是為了編譯librdkafka,而不是做基於openssl的開發,所以就先下載個安裝版的,進行安裝,下載地址:http://slproweb.com/products/Win32OpenSSL.html)
所以看東西要認真啊,雖然網站地址上寫明的是Win32Openssl,但是這個站點是有Win64Openssl下載的。這個站點並不是openssl官方提供的。
開始安裝openssl。開始下載的是最新的版本:Win64OpenSSL-1.1.1,但是安裝完后,發現lib文件夾里沒有編譯librdkafka需要的lib,所以換了一個,下載了Win64OpenSSL-v_1.0.2p。圖片中的選項要注意下,別選錯了,待會編譯librdkafka的時候會用到。
安裝成功之后,可以看到目錄結構如下:
然后在lib文件夾里就有你編譯librdkafka時需要用到的lib。
4.編譯librdkafka。我下載的是master分支。
解壓后,文件夾樹結構如下:
然后打開win32文件夾,打開解決方案,剩下的就是你很熟悉的配置附加庫路徑的事情了……
編譯的時候先編譯librdkafka。然后再編譯其他的。編譯的結果默認是動態庫,你要是想使用靜態庫也可以修改。
到了這一步庫的編譯過程就結束了。如下圖:
頭文件的話,在你的工程里需要引入的頭文件有一個:rdkafkacpp.h。然后編譯動態庫生成的dll還有對應的lib文件,這個也是需要引入你的工程里的,它不是我們通常講的靜態庫文件,只是編譯器在編譯階段會用到它們。