NATS服务器部署及测试
NATS服务器部署及测试
作者:chszs,未经博主允许不得转载。经许可的转载需注明作者和博客主页:http://blog.csdn.net/chszs
NATS的服务器是使用Golang语言开发的,其可执行文件的名字为gnatsd,表示Go NATS Daemon。NATS服务器是一个开源软件,基于MIT许可证发布。
NATS Server有Linux版、Mac版、Windows版。下面以Linux版为例,详述其部署过程。
NATS Server当前的最新版本为0.7.2版,有三种二进制发布包,详见:https://github.com/nats-io/gnatsd/releases/
- gnatsd-v0.7.2-darwin-amd64.tar.gz for Mac的版本
- gnatsd-v0.7.2-linux-amd64.tar.gz for Linux x64的版本
- gnatsd-v0.7.2-linux-arm.tar.gz for Linux ARM的版本
虽然NATS Server是用Go语言开发的,但运行gnatsd无需安装Golang环境。gnatsd非常的轻量级,发布包只有2MB多,启动时可以无需任何参数,直接运行即可。
1、NATS Server的服务器配置
gnatsd接受命令行参数作为控制手段。主要的服务器参数如下。
1)服务器选项
- -a, –addr HOST 绑定主机IP地址(默认是0.0.0.0)
- -p, –port PORT 客户端连接NATS服务器使用的端口(默认是4222)
- -P, –pid FILE 存储PID的文件
- -m, –http_port PORT 使用HTTP端口作为监听端口
- -ms, –https_port PORT 使用HTTPS端口作为监听端口
- -c, –config FILE 指定配置文件
2)日志选项
- -l, –log FILE 指定日志输出的文件
- -T, –logtime 是否开启日志的时间戳(默认为true)
- -s, –syslog 启用syslog作为日志方法
- -r, –remote_syslog 远程日志服务器的地址(默认为udp://localhost:514)
- -D, –debug 开启调试输出
- -V, –trace 跟踪原始的协议
- -DV 调试并跟踪
3)授权认证选项
- –user user 连接需要的用户名
- –pass password 连接需要的密码
4)TLS安全选项
- –tls 启用TLS,不验证客户端(默认为false)
- –tlscert FILE 服务器证书文件
- –tlskey FILE 服务器证书私钥
- –tlsverify 启用TLS,每一个客户端都要认证
- –tlscacert FILE 客户端证书CA用于认证
5)集群选项
- –routes [rurl-1, rurl-2] 路线征求并连接
6)常规选项
- -h, –help 显示帮助消息
- -v, –version 显示版本信息
2、NATS Server部署
1)解压
# tar zvxf /home/gnatsd-v0.7.2-linux-amd64.tar.gz
./
LICENSE
README.md
gnatsd
2)运行
# ./gnatsd
[10787] 2016/03/28 23:22:18.472500 [INF] Starting gnatsd version 0.7.2
[10787] 2016/03/28 23:22:18.472716 [INF] Listening for client connections on 0.0.0.0:4222
[10787] 2016/03/28 23:22:18.473127 [INF] gnatsd is ready
3)查看运行
# ps -ef |grep gnatsd
root 10787 10296 0 23:22 pts/0 00:00:00 ./gnatsd
root 10795 10669 0 23:22 pts/2 00:00:00 grep --color=auto gnats
4)远程登录
在远程机器上(我的是win 8.1),执行Telnet登录:
C:\> telnet xxx.xxx.xxx.xxx 4222
连上后Telnet立刻输出:
INFO {"server_id":"321233a60fd2a889a1a2f96bc1e95afe","version":"0.7.2","go":"go1.5.2","host":"0.0.0.0","port":4222,"auth
_required":false,"ssl_required":false,"tls_required":false,"tls_verify":false,"max_payload":1048576}
可见,gnatsd使用了Golang 1.5.2版开发。再次按下回车键,Telnet断开连接,显示:
-ERR 'Unknown Protocol Operation'
-ERR 'Parser Error'遗失对主机的连接。
同样,gnatsd服务器端也会输出这样的信息:
[10787] 2016/03/28 23:31:47.050594 [ERR] xxx.xxx.xxx.xxx:58007 - cid:2 - Error reading from client: Client Parser ERROR, state=0, i=0: proto='"\r"...'
3、发布/订阅模式的验证
使用两个客户端进行验证。在远程Windows主机上开两个CMD命令行环境,均使用命令“C:> telnet xxx.xxx.xxx.xxx 4222”连上gnatsd服务器。为了以示区别,这里命名为客户端A和客户端B,A表示发布者,B表示订阅者。
1)订阅者B运行
订阅者B使用通配符foot.*注册主题ID为90的主题,订阅成功,gnatsd服务器返回+OK消息。
sub foo.* 90
+OK
2)发布者A运行
发布者A发布一条消息到主题foo.bar,消息有效负载的长度为5,按下回车。消息发布成功,gnatsd服务器返回+OK消息。
pub foo.bar 5
hello
+OK
3)订阅者B显示
sub foo.* 90
+OK
MSG foo.bar 90 5
hello
前两行是之前的内容,后两行是新获得的推送消息。可见,发布/订阅的消息通信成功。
4)发布者A继续执行
发布者A继续执行以下命令,消息发布成功,gnatsd服务器返回+OK消息。
pub foo.bar optional.reply.subject 5
hello
+OK
5)接收者B继续显示
MSG foo.bar 90 5
hello
PING
MSG foo.bar 90 optional.replay ly.subject 5
hello
后面三行都是新增的消息内容,其中PING是维持连接的消息。
6)接收者B执行
接收者B执行取消订阅命令,命令消息发送成功,gnatsd服务器返回+OK消息。
unsub 90
+OK
7)发布者A运行
发布者A再次发布一条消息到主题foo.bar,消息有效负载的长度为5,按下回车。消息发布成功,gnatsd服务器返回+OK消息。
pub foo.bar 5
hell2
+OK
此时接收者B收不到消息,因为订阅已经取消了。
客户端发出心跳命令消息PING(用小写ping也是同样的),gnatsd服务器返回PONG消息。
ping
PONG
PING
PONG
NATS服务器部署及测试相关推荐
- CRTMP视频直播服务器部署及测试
一.搭建CRTMP视频直播服务器 1.下载CRTMP服务器软件 svn co --username anonymous --password "" https://svn.rtmp ...
- python web开发c6——阿里云上ubuntu+flask+gunicorn+nginx服务器部署(一)简单测试
简述 Nginx在服务器部署中的作用 请求通过Nginx实现反向代理,将请求提交给代理服务器.本文中只用了一台服务器,所以是代理到本机. gunicorn的作用 作为服务器代码的容器.接收Nginx的 ...
- 小白开发微信小程序49--本地服务器部署测试小程序
相信大家对微信小程序的基础和项目应该没有太大问题了,如果还有对微信小程序开发有一些问题,请查看回顾...微信小程序开发者开发好一款微信小程序后,怎么才能发布呢?如何将其提交给微信审核呢? 在前面的[领 ...
- 基于Centos7.2的自选域名配置实现正向和反向解析以及部署并测试缓存DNS服务器
自选域名配置实现正向和反向解析 (注:下文中 IP 192.168.200.101为我的虚拟机IP,涉及上述"192.168.200.101"以及"192.168.200 ...
- 服务器部署基础知识_我在生产部署期间学到的知识
服务器部署基础知识 by Shruti Tanwar 通过Shruti Tanwar 我在生产部署期间学到的知识 (What I learned during production deploymen ...
- lzg_ad:使用Virtual PC 部署和测试XP Embedded 发布镜像
注意: 本文将假设你已经熟悉并会使用Virtual PC. 如果对Visual PC的使用方法还不了解,请参考: http://www.petri.co.il/virtual_create_virtu ...
- 关键数据保险箱,AD RMS服务器部署指南
关键数据的保险箱,AD RMS服务器部署指南<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:offi ...
- GitLab [Webhooks] 实现自动化服务器部署
简介 我们在部署我们的web应用时 我们一般会寻求一些云平台服务器部署 当然也可以直接在服务器里拉取远程仓库的代码 当然我们也可以实现通过Webhooks(钩子)来实现服务器与远程仓库代码的同步 这样 ...
- MED-V服务器部署,MED-V服务器系列之一
MED-V服务器部署 [IT168 专稿]微软在2009年4月份发布的MDOP2009中终于提供了MED-V的正式版本.MED-V是 Microsoft Enterprise Desktop Vi ...
最新文章
- Java IO的一些思考
- 4固定在底部_自建房不搭彩钢棚,4根钢结构撑个玻璃棚遮风挡雨,上面多个露台...
- Larbin简介,及其在Ubuntu10.04下的编译安装
- 设置element表格透明样式
- mysql union all sum_[数据库]SQL Server UNION ALL 结果 SUM函数造成精度丢失
- 《c语言从入门到精通》看书笔记——第7章 循环控制
- 20145231 《信息安全系统设计基础》期中总结
- 机器学习的一些注意事项
- linux top 命令各参数详解
- 机器人带陀螺仪走钢丝_一言不合就走钢丝,机器人化身“七变美男子”,萌翻你!...
- .Net 机器学习资源,你有想要的么
- C语言图书管理系统 文件数据库
- PMP 考点 第六章 项目进度管理
- Vue + element + Springboot 通过邮箱找回密码
- 利用python分析电商_基于Word2Vec+SVM对电商的评论数据进行情感分析
- 排列宝石问题C++实现
- 基于linux的 设计,基于Linux的智能家居的设计(一)
- 链表中LinkList L与LinkList *L的区别以及(*L).elem,L.elem L-next,(*L)-next的区别
- win10sas安装教程_炫龙炫锋AS3笔记本U盘重装win10系统教程
- SCRM和CRM有什么区别
热门文章
- 能让你纵享丝滑的SSR技术,转转这样实践
- QML-关于Qt.rgba()颜色无法正常显示问题
- Proxmox VE 安装、配置、使用之第二章 Proxmox VE 的安全性
- 二叉树的蛇形遍历 leetcode 103
- 程序员技术进阶手册(一)
- vs2015提示中文
- ASP.NET中Request.ApplicationPath、Request.FilePath、Request.Path、.Request.MapPath、Server.MapPath的区别...
- WCF分布式开发常见错误(10):套接字连接中断,The socket connection was aborted
- java数据结构与算法_清华大学出版社-图书详情-《数据结构与算法分析(Java版)》...
- python判断字符大小写转换_Python 字符串大小写转换的简单实例