因为公司在业务中需要用到消息队列产品,我选用了基于golang开源的nsq产品,记录下我遇到的那些部署中的坑。
首先安装nsq,这个没什么好说的,我是直接在官网下载bin文件,直接部署的,环境是centOS 6.7,安装在/opt/nsq-0.3.7.linux-amd64.go1.6目录下;
其次是安装nodejs,我安装的是v6.1.0版本,这步也没什么好讲;
然后安装nsqjs这个遇到了些坑,这里先记录下
1、要看下gcc的版本;

$ gcc -v使用内建 specs。
目标:x86_64-redhat-linux
配置为:../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-languages=c,c++,objc,obj-c++,java,fortran,ada --enable-java-awt=gtk --disable-dssi --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-1.5.0.0/jre --enable-libgcj-multifile --enable-java-maintainer-mode --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --disable-libjava-multilib --with-ppl --with-cloog --with-tune=generic --with-arch_32=i686 --build=x86_64-redhat-linux
线程模型:posix
gcc 版本 4.4.7 20120313 (Red Hat 4.4.7-16) (GCC)

2、因为node.js 4升级了v8引擎,要求gcc的版本在4.8以上,所以要先更新gcc版本;

$ rpm -ivh https://www.softwarecollections.org/en/scls/rhscl/devtoolset-3/epel-6-x86_64/download/rhscl-devtoolset-3-epel-6-x86_64.noarch.rpm
$ yum install devtoolset-3-gcc-c++
临时使用最新版gcc:
$ scl enable devtoolset-3 bash
系统默认使用gcc-4.9
$ echo "source /opt/rh/devtoolset-3/enable" >>/etc/profile

3、然后安装nsqjs,为了项目的复用,我就用了全局安装,然后把nsqjs复制到项目的node_modules中就可以了;

$ npm install -g nsqjs

4、把nsqjs复制到项目的node_modules目录下;
5、在项目中建立个app.js文件,输入以下代码并保存:

var nsq = require('nsqjs');var reader = new nsq.Reader('sys_topic', 'sys_chan', {lookupdHTTPAddresses: '127.0.0.1:4161'
});reader.connect();reader.on('message', function(msg) {var t = new Date();console.log('time [%s] Received message [%s]: %s', t.Format('yyyy-MM-dd hh:mm:ss'), msg.id, msg.body.toString());msg.finish();
});Date.prototype.Format = function(fmt) { //author: meizz var o = {"M+": this.getMonth() + 1, //月份 "d+": this.getDate(), //日 "h+": this.getHours(), //小时 "m+": this.getMinutes(), //分 "s+": this.getSeconds(), //秒 "q+": Math.floor((this.getMonth() + 3) / 3), //季度 "S": this.getMilliseconds() //毫秒 };if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));for (var k in o)if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));return fmt;
}

6、在nsqadmin的页面中,创建Topic为“sys_topic”和channel为“sys_chan”;

7、在应用终端中,运行这个js文件

$ node app.js

8、在另外一个终端中发布一个消息

$ curl -d '{"aa":"text","caption":"nsq_test","bool_v":true}'  'http://127.0.0.1:4151/put?topic=sys_topic&channel=sys_chan'

9、看看到我们能非常快的接收到发布的消息

nsqjs客户端的部署相关推荐

  1. linux ldap客户端工具,OpenLDAP 客户端安装部署

    一.账号登录系统流程讲解 当在客户端输入账号登录系统时,系统根据/etc/nsswitch.conf配置文件获取账号查找顺序,然后再根据PAM配置文件调用相关模块,对账号(/etc/passwd)及密 ...

  2. OSSEC服务端配置客户端批量部署方案

    0x00 前言 最近也在研究ossec报警规则,还没研究的很透彻,暂时不是这篇文章的内容.ossec中文资料还是比较少,外文文献比较多.之前看到drops的两篇文章分享/tips/?id=2821,/ ...

  3. openldap linux客户端,OpenLDAP 客户端安装部署

    六.OpenLDAP客户端验证 1.配置/etc/openldap/ldap.conf 默认客户端不允许查询OpenLDAP条目信息,如果需要让客户端查询条目,需要添加OpenLDAP服务端的URI以 ...

  4. NTP服务端和客户端的部署——Chrony

    Chrony是一个开源的自由软件,它能保持系统时钟与时钟服务器(NTP)同步,让时间保持精确. 它由两个程序组成:chronyd和chronyc: chronyd是一个后台运行的守护进程,用于调整内核 ...

  5. android客户端Netty部署SSL/TLS

    应用场景: 服务端server为windows系统通过kJava SDK附带的keytool创建了一个新的Keystore,秘钥及签名证书生成 (1)生成Netty服务器公钥.私钥和证书仓库: key ...

  6. Windows 10企业批量部署实战之Windows 10客户端部署

    本章为Windows 10企业批量部署实战系列的高潮部分客户端批量部署验证,话不多述直接进入正题. 1.客户端通过网络启动后获取到IP地址后,根据提示按F12键: 2.连接并开始加载启动PE: 如果我 ...

  7. 部署卡巴斯基网络版6.0:客户端推拉测试

    安装完卡巴的管理工具后,下面我们就可以通过控制中心选择适当的方式进行客户端的部署.客户端分为服务器客户端.工作站客户端.Linux客户端.MAC客户端.这里我那windows平台的服务器和工作站来做推 ...

  8. Symantec SEP11.0客户端部署!

    最近忙着做Symantec SEP11.0客户端的部署项目,客户端数量涉及到整个股份公司,客户端数量我估计有好几千. 目前进展还算胜利,集团总部的PC花了2天时间已基本部署到位.而其它的20个分公司也 ...

  9. SKIL/工作流程/Java部署客户端

    Java部署客户端 SKIL部署客户端是用于处理SKIL客户端请求的Java API.与原始JSON请求相比,它直观且易于使用.它提供了构建请求对象的构建器模式.响应有自己的类对象. 添加到项目 客户 ...

最新文章

  1. 《oracle大型数据库系统在AIX/unix上的实战详解》讨论31: oracle、sybase 数据库的不同访问...
  2. 服务治理·理论篇(一)
  3. HDU 3072 SCC Intelligence System
  4. 【英语学习】【WOTD】darling 释义/词源/示例
  5. 使用Python模拟男人在长椅上选择座位的过程
  6. 爪哇国新游记之二十六----迷宫寻路
  7. MVC的Filter应用小结
  8. 2. mac mysql error
  9. gitlab鉴权失败
  10. 企业管理的六大关系和八大系统
  11. PAT乙级1068 万绿丛中一点红 (20 分)
  12. 有一张足够大的纸,它的厚度是0.1毫米。请问,折叠多少次,可以折成珠穆朗玛峰的高度。(java实现)
  13. 第十六章 SQL命令 CREATE TABLE(三)
  14. 《Redis设计与实现》第十一章 AOF持久化
  15. 【论文笔记】Crop phenotyping in a context of Global Change: what to measure and how to do it
  16. 如何查看网站是否被百度(搜索引擎)收录
  17. openssl自签名ca证书,以及签发服务端/客户端证书
  18. 南昌大专计算机学校有哪些,江西南昌单招大专学校有哪些学校
  19. Chrome Webdriver的下载安装
  20. 考研概率论--87年真题--MATLAB暴力求解

热门文章

  1. 好用到爆的 Java 技巧
  2. Lombok经常用,但是你知道它的原理是什么吗?
  3. System.currentTimeMillis()竟然存在性能问题,这我能信?
  4. Datawhale来厦大啦!
  5. 如何高性价比地构建GPU环境,实现GPU自由?
  6. 训练AI要“什么自行车” 只用了1万辆小破车 | ICCV2021 VIPriors
  7. 精心总结 Python『八宗罪』,邀你来吐槽
  8. 图解:轻松看懂机器学习十大常用算法
  9. 一手好 SQL 是如何炼成的?
  10. 环形熔断器设计与gobreaker源码分析