工作日志,go get -v -x github.com/pebbe/zmq4 失敗問題


工作日志,go get -v -x github.com/pebbe/zmq4 失敗問題

筆者因為工作需要使用ZeroMQ,但是在執行go get -v -x github.com/pebbe/zmq4 命令時一直提示auth.go:19:17: fatal error: zmq.h: No such file or directory 的錯誤,這里記錄踩坑日志

1575616110160

ZeroMQ簡介

ZeroMQ(也稱為ØMQ,0MQ或ZMQ)是一種高性能的異步消息傳遞庫,旨在用於分布式或並行應用程序中。它提供了一個消息隊列,但是與常見的RabbitMQ,ActiveMQ消息中間件不同。ZeroMQ就像一個工具包直接嵌入到項目中,具有很高的吞吐量。但也存在很多局限性。

ZeroMQ 優點

一)、吞吐量遠高與其他消息中間件,號稱是“史上最快的消息隊列”。

二)、擴展性強,可以對原生的方法進行封裝,豐富其功能。

ZeroMQ缺點

一)、消息的不可靠性。ZeroMQ並不能保證可靠的消息傳輸,算的上致命缺點吧。

二)、原生不支持消息的持久化,僅支持本地緩存。當本地緩存塞滿后,可能存在消息丟失的情況。

三)、沒有很好的調試工具。代碼雖然提示發送成功,但訂閱方卻收不到消息。

解決思路

第一步:下載Windows版的zeromq,官網下載地址:https://dl.bintray.com/zeromq/generic/libzmq-v141-x64-4_3_2.zip

第二步:解壓libzmq-v141-x64-4_3_2.zip,將解壓后的libzmq-v141-mt-4_3_2.dll 和 libsodium.dll 拷貝到GOPATH\pkg\mod\github.com\pebbe\zmq4@v1.0.0\usr\local\lib 目錄下(或者是GOPATH\src\github.com...),若目錄不存在則需手動創建。拷貝后再將libzmq-v141-mt-4_3_2.dll 重名為libzmq.dll

第三步:下載zeromq\libzmq源文件,github下載地址:https://github.com/zeromq/libzmq/releases/download/v4.3.2/zeromq-4.3.2.zip

第四步:解壓zeromq-4.3.2.zip,將解壓后的include目錄直接拷貝到GOPATH\pkg\mod\github.com\pebbe\zmq4@v1.0.0\usr\local\ 目錄下(或者是GOPATH\src\github.com...)

第五步:再執行go get -v -x github.com/pebbe/zmq4 命令,等待完成。

其他問題

一)、could not determine kind of name for C.SOCKET

筆者 在第一次安裝ZeroMQ時遇到過(好像4.3.3版本存在這個問題,4.3.2沒有),需要修改GOPATH\pkg\mod\github.com\pebbe\zmq4(@v1.0.0)\socketget_windows.go 文件,在import "C"之前加一行 #include <winsock2.h>

二)、下載過程中出現 timeout

配置國內代理https://github.com/goproxy/goproxy.cn/blob/master/README.zh-CN.md

在PowerShell中執行命令

C:\> $env:GOPROXY = "https://goproxy.cn"

三)、ZeroMQ 訂閱成功但收不到消息

代碼打印消息提示訂閱成功,發送端也提示發送成功。但是訂閱端就是收不到消息。后來的連接地址的localhost改成實際IP地址就好了。


免責聲明!

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



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