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 gnatsd2)運行
# ./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 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 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 5 hello +OK3)訂閱者B顯示
sub foo.* 90 +OK MSG foo.bar 90 5 hello前兩行是之前的內容,后兩行是新獲得的推送消息。可見,發布/訂閱的消息通信成功。
4)發布者A繼續執行
發布者A繼續執行以下命令,消息發布成功,gnatsd服務器返回+OK消息。
pub foo.bar optional.reply.subject 5 hello +OK5)接收者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 +OK7)發布者A運行
發布者A再次發布一條消息到主題foo.bar,消息有效負載的長度為5,按下回車。消息發布成功,gnatsd服務器返回+OK消息。
pub foo.bar 5 hell2 +OK此時接收者B收不到消息,因為訂閱已經取消了。
客戶端發出心跳命令消息PING(用小寫ping也是同樣的),gnatsd服務器返回PONG消息。
總結
以上是生活随笔為你收集整理的NATS服务器部署及测试的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Angularjs调用公共方法与共享数据
- 下一篇: WebService学习笔记---CXF