工作日志,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 的错误,这里记录踩坑日志。

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地址就好了。
工作日志,go get -v -x github.com/pebbe/zmq4 失败问题的更多相关文章
- 使用SharePoint Designer定制开发员工工作日志系统实例!
昨天已介绍了一篇<使用SharePoint Designer定制开发专家库系统实例!>,今天继续来介绍使用SharePoint Designer定制开发员工工作日志系统实例,主要功能包括填 ...
- WebADI_WebADI工作日志设定(案例)
20150707 Created By BaoXinjian
- ubuntu下定时弹窗记录工作日志
背景 记录工作日志,是一个很好的习惯,但不容易坚持,本来打算每天记录,但经常拖延,拖着拖着,有一些事情就忘记了. 等到写周报或月报的时候,才会开始翻邮件,聊天记录,各个仓库的提交log等,回忆都干了些 ...
- 工作日志,证书无效 unable to find valid certification path to requested target
工作日志,证书无效 unable to find valid certification path to requested target 最近被这个问题弄得头大.导致所有用到 se.transmod ...
- JIRA开启时间追踪并为问题记录工作日志
在升级版的JIRA中(4.2or4.3),我们可以使用其记录工作日志的功能.之前研究了很长时间,就是找不到初始预估时间在哪里设置,但是剩余工作时间与耗费时间都可以填写.根据官网的帮助文档也没找到合适的 ...
- 工作日志,error parsing query: unable to find time zone
工作日志,error parsing query: unable to find time zone 坑 Windows 系统使用influxdb数据库,在执行查询语句时提示 ERR: error p ...
- $ ssh -T -v git@github.com_在本地用ssh连接github出错_git@github.com: Permission denied (publickey).
$ ssh -T -v git@github.com报错: debug1: Authentications that can continue: publickey debug1: Next auth ...
- Github css加载失败,样式混乱解决办法
github被墙的解决办法 Github css加载失败,样式混乱解决办法 打开cmd,输入 nslookup github.com 8.8.8.8 ,下面就会显示出github的服务器地址列 ...
- YT工作日志-0911
上午 在导师的帮助下,帮我从svn上下载了项目.但是因为项目太大(不算jar包有730M),很多模块不是我工作中涉及的,但是运行的时候会报错,所以导师还帮我找了很多错误.把那些不需要的东西注释了.就这 ...
随机推荐
- Information Management System
Information Management System 一.代码部分 #include <stdio.h> #include <stdlib.h> #include < ...
- java之枚举和注解
JDK1.5新增的enum关键字用于定义枚举类. 枚举类和普通类的区别: 使用enum定义的枚举类默认继承了java.lang.Enum类: 枚举类的构造器只能使用private修饰符: 枚举类的所有 ...
- Jenkins之自动部署、代码安全扫描、自动化接口测试
搭建Jenkins wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.reporpm --i ...
- C# 使用.net core 驱动树莓派的IO信号
如何使用.net core来驱动树莓派的IO信号?是我们的实际项目需求中,可能就会有这种小项目,我们要输出一个IO信号,此处我们拿了树莓派4做测试 一共有两排引脚,引脚的顺序定义及功能如下: 我们就参 ...
- Mysql字符串截取_获取指定字符串中的数据
前言:本人遇到一个需求,需要在MySql的字段中截取一段字符串中的特定字符,类似于正则表达式的截取,苦于没有合适的方法,百度之后终于找到一个合适的方法:substring_index('www.sql ...
- pyecharts画图总结
pyecharts 画图归纳 将本地文件导入到Pyecharts: test = open(filename, 'r') data = test.readlines() test.close() 如果 ...
- JS---DOM---元素创建的不同方式---三种方式,5个案例
元素创建-----为了提高用户的体验 元素创建的三种方式: 1. document.write("标签的代码及内容"); 2. 对象.innerHTML="标签及代码 ...
- 简单使用vue-cli
上一篇我们简单的看了看vue的基本用法,就是三步,首先就是用<script>标签引入vue的依赖,然后就是写html标签,在标签中用vue指令绑定一些属性,最后就是new Vue(xxx) ...
- 三、VUE项目BaseCms系列文章:axios 的封装
项目开发中 ajax 是不可缺少的,一个好的封装可以减少我们很多的重复代码,维护也更方便.在 vue 开发中我们用的比较多的就是 axios.下面代码是项目中用到的 axios 的封装. http.j ...
- stream根据条件过滤List<Object>
List<String> filterUser= new ArrayList<>(); filterUser.add("张三"); List<User ...