
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 ./liCENSEREADME.mdgnatsd2)运行
# ./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 ready3)查看运行
# ps -ef |grep gnatsdroot 10787 10296 0 23:22 pts/0 00:00:00 ./gnatsdroot 10795 10669 0 23:22 pts/2 00:00:00 grep --color=auto gnats4)远程登录
在远程机器上(我的是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+OK2)发布者A运行
发布者A发布一条消息到主题foo.bar,消息有效负载的长度为5,按下回车。消息发布成功,gnatsd服务器返回+OK消息。
pub foo.bar 5hello+OK3)订阅者B显示
sub foo.* 90+OKMSG foo.bar 90 5hello
前两行是之前的内容,后两行是新获得的推送消息。可见,发布/订阅的消息通信成功。
4)发布者A继续执行发布者A继续执行以下命令,消息发布成功,gnatsd服务器返回+OK消息。
pub foo.bar optional.reply.subject 5hello+OK5)接收者B继续显示
MSG foo.bar 90 5helloPingMSG foo.bar 90 optional.replay ly.subject 5hello
后面三行都是新增的消息内容,其中Ping是维持连接的消息。
6)接收者B执行接收者B执行取消订阅命令,命令消息发送成功,gnatsd服务器返回+OK消息。
unsub 90+OK7)发布者A运行
发布者A再次发布一条消息到主题foo.bar,消息有效负载的长度为5,按下回车。消息发布成功,gnatsd服务器返回+OK消息。
pub foo.bar 5hell2+OK
此时接收者B收不到消息,因为订阅已经取消了。
客户端发出心跳命令消息Ping(用小写Ping也是同样的),gnatsd服务器返回PONG消息。
PingPONGPingPONG总结
以上是内存溢出为你收集整理的NATS服务器部署及测试全部内容,希望文章能够帮你解决NATS服务器部署及测试所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)