天天看點

工作日志,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

的錯誤,這裡記錄踩坑日志。
工作日志,go get -v -x github.com/pebbe/zmq4 失敗問題

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\[email protected]\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\[email protected]\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位址就好了。

作者:ITDragon龍

出處:http://www.cnblogs.com/itdragon/

簡介:每天都在進步,每周都在總結,架構師的修羅之路!你的一個點贊,一句留言,就可以讓部落客開心一笑,充滿動力!ITDragon的微信公衆号學英語會程式設計隻有英語學的好,源碼才能看的爽

版權:本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,否則保留追究法律責任的權利。

zmq