NATS服务器部署及测试

版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/51002444

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/294770.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

wdcp服务器/虚拟主机管理系统,wdcp服务器/虚拟主机管理系统1.1发布(最后更新20110423)...

wdcp服务器/虚拟主机管理系统1.1发布 (最后更新20110423,查看更新日志)wdcp (WDlinux Control Panel) 是一套用PHP开发的Linux服务器管理系统,旨在易于使用和管理Linux服务器,可以在线通过网页管理服务器和虚拟主机.简单,方便,易操作.只有Linux版本,没有windows版本,让你方便地…

Java开发者为最急需IT技术人才

美国在线招聘网站Dice发布的月度IT技能需求报告显示,Java开发者、移动开发者和.Net开发者是目前最急需的IT职位,软件开发者排名第四。 Dice表示,在人才市场上,招聘经理提到这些职位的频率是其他职位的2到3倍。目前美国科技行业共有…

如何修改 asp.net core 5 程序的默认端口号?

咨询区 ja73在本地开发环境下,我知道可以通过修改 launchSettings.json 文件中的端口号来实现端口切换。"WebApplication1": {"commandName": "Project","launchBrowser": true,"launchUrl": "weatherforec…

Spring AOP 本质

AOP本质是拦截,拦截的本质是代理,代理分动态和静态,静态代理很简单,功能有限,应用不是很广泛,Spring中主要用的动态代理。用Spring做开发,AOP的实现仅仅是编程实现一些接口,然后配置…

颜宁问4对科研夫妻:男科学家怎样平衡事业家庭?

全世界只有3.14 % 的人关注了爆炸吧知识本文来源:科学网网上很多人一说到我,就说颜宁之所以能成功,因为她是单身,没有家庭拖累。但事实上,有家庭、有事业才是绝大多数人的现状。我们这次请来四对科研伉俪,不…

数据库 流量切分_互联网大厂有哪些分库分表的思路和技巧?

写在前面冰河曾经经历过一个完整电商系统用户从零到上亿的研发过程,在业务的不断发展与变化过程中,演化出电商系统和基于大数据的商品精准实时推荐平台,关于MySQL数据库的架构演进,小伙伴们可以参考《从零到千万用户,我…

feign和ajax,SpringCloud-feign 声明式服务调用

以前学习java,一般就一个后端,都要学习如何在容器中运行,如tomcat,weblogic,现在微服务颠覆了这一切,一个系统要被拆分成多个服务,服务与服务间需要通信,让我想到了前端的ajax&#…

WebService学习笔记---CXF入门

2019独角兽企业重金招聘Python工程师标准>>> 一、准备 软件环境&#xff1a; JDK1.8, Eclipse JEE 4.4, Maven-3.2.5, Spring-4, CXF-3.1.5 二、创建项目 新建一个Maven项目&#xff0c;在pom.xml里添加spring依赖<dependencyManagement><dependencies>…

提供程序未返回 ProviderManifestToken 字符串

我这是在学习MVC3.0时出现的错误&#xff0c;其实呢这个问题主要是因为web.config配置文件访问数据库的时候连接出错造成的 <connectionStrings> <add name"ApplicationServices" connectionString"data source.\SQLEXPRESS;Integrated Sec…

.NET 6新特性试用 | ArgumentNullException卫语句

前言在前面的文章中&#xff08;《可空引用类型》&#xff09;&#xff0c;我们介绍过编译器会帮我们检查空引用&#xff0c;但是仅仅是警告。最好的方式还是在运行时用卫语句进行检查&#xff1a;private void Test(WeatherForecast weatherForecast) {if (weatherForecast n…

JSP之EL表达式详细介绍

一、JSP EL语言定义 E L&#xff08;Expression Language&#xff09; 目的&#xff1a;为了使 JSP写起来更加简单。 表达式语言的灵感来自于 ECMAScript 和 XPath 表达式语言&#xff0c;它提供了在 JSP 中简化表达式的方法。它是一种简单的语言&#xff0c;基于可用的命名空…

那一年,爱因斯坦输得很惨很惨,被十几个诺奖得主怼了一遍后,退出了群聊……...

全世界只有3.14 % 的人关注了爆炸吧知识科学家撕逼原来这么刺激“遇事不决&#xff0c;量子力学”&#xff0c;作为长期在民间被调侃的学科&#xff0c;量子力学的名声不小&#xff0c;但它究竟有多重要&#xff0c;又是怎么来的&#xff0c;却少有人了解。而说到量子力学&…

带有帐号密码验证的apche服务器文件下载

2019独角兽企业重金招聘Python工程师标准>>> 使用python访问 #!/usr/bin/python #fileencoding:utf-8def testUrl():import urllib2import sysimport reimport base64from urlparse import urlparse#下载路径theurl http://ip/release/LHJH/Server/er_service.waru…

00截断上传绕过_小谈截断上传漏洞

0x00 前言小菜今天在测试网站的时候&#xff0c;发现存在上传点&#xff0c;于是尝试各种姿势&#xff0c;环境为iis7.5&#xff0c;于是乎来一个解析漏洞&#xff0c;发现并不可以&#xff0c;最终百度乎&#xff0c;发现上传有很多种利用方法&#xff0c;所以小菜就去学习了一…

使用keytool查看Android APK签名

文章目录 一、找到JDK位置二、使用方法2.1 打开windows命令行工具2.2 查看签名 三、如何给APK做系统签名呢? 一、找到JDK位置 安卓AS之后&#xff0c;可选择继续安装JDK&#xff0c;如本文使用amazon版本默认位置&#xff1a;C:\Users\66176.jdks\corretto-1.8.0_342可通过自…

exchange服务器维护模式命令,Exchange服务器系列课程之七--维护邮件服务器(二)

继续上次的讨论&#xff0c;上次讨论了邮件服务器的一些监控和排错手段&#xff0c;今天我们继续来讨论邮件服务器的维护。今天主要来讨论一下邮件服务器的备份与还原。为什么要备份我就不多说了&#xff0c;备份的方法也非常简单&#xff0c;通过备份工具直接备份就可以了。这…

任务管理器在右下角的图标不显示

任务管理器在右下角的图标不显示 2012年11月7日18:22:23 症状如下图所示&#xff0c;不管是打开任务管理器还是最小化它&#xff0c;右下角均没有它的图标。 网上查到的说法均不靠谱。后来我CtrlAltDel调出任务管理器&#xff0c;找到任务管理器对应进程“taskmgr.exe”&#x…

总结 一下UML 类图的关系

1&#xff0c;实线三角 表示 泛化 是一种继承关系,它指定了子类如何特化父类的所有特征和行为 2&#xff0c;虚线三角 表示 实现 是一种类与接口的关系&#xff0c;表示类是接口所有特征和行为的实现 3&#xff0c;空心菱形 表示 聚合 是整体与部分的关系 4&#xff0c; 实心…

MAUI中构建跨平台原生控件实现

简介MAUI中使用Handler体系来处理不同平台的原生控件实现, 即对应的, 如果我们想要创建控件, 只需要创建基于不同平台的Handler即可。那么下面主要教大家如何通过创建Handler(事件处理程序)来构建自己的控件。开始下面, 将通过创建一个进度条控件案例, 来演示如何在MAUI项目中创…

Android之android studio如何获取证书指纹 (SHA1)

android studio如何获取证书指纹 (SHA1) 为什么要用SHA1 我们做百度地图或是高德地图的时候。注册app信息要求填写数字签名 我们可以通过外部命令行获取&#xff0c;也可以通过eclipse获取 &#xff0c;现在主流是android studio下面是通过Android studio获取的方法 第一步&am…