Install and Run NATS Streaming Server
NATS是一个开源的、轻量级的、高性能的分布式消息通信系统,使用的公司有百度、西门子、VMware、HTC和爱立信。NATS Streaming是以NATS为动力的数据流系统,是用go语言写的,NATS Streaming server可执行文件的名称是nats-streaming-server,NATS Streaming嵌入,扩展,并且与核心的NATS平台无缝的对接,NATS Streaming server是根据麻省理工学院许可提供的开源软件,Apcera积极维护和支持NATS Streaming server。

此图来自官网,其他特性也可在官网查看。
测试环境
os:CentOS release 6.8 (Final) ip:192.168.0.31
Install the NATS Streaming server
我这里使用go环境安装,所以先部署go环境。
Install Go
wget https://storage.googleapis.com/golang/go1.8.3.linux-amd64.tar.gz
tar -C /usr/local -xzvf go1.8.3.linux-amd64.tar.gz
上面将go安装到/usr/local下。
配置环境变量
将下面这句添加到/etc/profile作为全局变量,或者$HOME/bash_profile作为此用户的变量。然后source此文件让环境变量生效。
export PATH=$PATH:/usr/local/go/bin
设置你的GOPATH
你的go工作目录(GOPATH)存储你的go代码。它可以是除了go安装目录(GOROOT)外的任何路径。
- 为你的工作空间设置GOPATH环境变量
export GOPATH=$HOME/go
- 还设置GOPATH/bin变量,用于运行编译go程序。
export PATH=$PATH:$GOPATH/bin
然后使用go get来下载源代码并进行编译安装:
go get github.com/nats-io/nats-streaming-server
上面编译安装完成后,会在GOPATH/bin目录下生成一个nats-streaming-server的二进制文件。
Start the NATS Streaming server
可以直接运行上面生成的nats-streaming-server二进制文件,启动一个独立的server。
nats-streaming-server
当启动成功时,你可以看到nats-streaming-server在tcp端口4222上监听客户端连接:
[3132] 2017/07/30 20:10:33.943821 [INF] STREAM: Starting nats-streaming-server[test-cluster] version 0.6.0
[3132] 2017/07/30 20:10:33.944007 [INF] STREAM: ServerID: TN2MjoOfZd83WZLJIGwtYh
[3132] 2017/07/30 20:10:33.944016 [INF] STREAM: Go version: go1.8.3
[3132] 2017/07/30 20:10:33.944226 [INF] Starting nats-server version 0.9.6
[3132] 2017/07/30 20:10:33.944424 [INF] Listening for client connections on 0.0.0.0:4222
[3132] 2017/07/30 20:10:33.944436 [INF] Server is ready
[3132] 2017/07/30 20:10:34.225391 [INF] STREAM: Message store is MEMORY
[3132] 2017/07/30 20:10:34.225513 [INF] STREAM: ---------- Store Limits ----------
[3132] 2017/07/30 20:10:34.225531 [INF] STREAM: Channels: 100 *
[3132] 2017/07/30 20:10:34.225543 [INF] STREAM: --------- Channels Limits --------
[3132] 2017/07/30 20:10:34.225555 [INF] STREAM: Subscriptions: 1000 *
[3132] 2017/07/30 20:10:34.225566 [INF] STREAM: Messages : 1000000 *
[3132] 2017/07/30 20:10:34.225577 [INF] STREAM: Bytes : 976.56 MB *
[3132] 2017/07/30 20:10:34.225588 [INF] STREAM: Age : unlimited *
[3132] 2017/07/30 20:10:34.225599 [INF] STREAM: ----------------------------------
启动带有NATS监控的NATS Streaming Server
NATS Streaming Server暴露监控界面在嵌入NATS Server(gnatsd)在端口8222。
nats-streaming-server -m 8222
运行可以看到如下信息:
[3143] 2017/07/30 20:20:06.961108 [INF] STREAM: Starting nats-streaming-server[test-cluster] version 0.6.0
[3143] 2017/07/30 20:20:06.961250 [INF] STREAM: ServerID: EYubV70M1FW4xetDCi8cXJ
[3143] 2017/07/30 20:20:06.961268 [INF] STREAM: Go version: go1.8.3
[3143] 2017/07/30 20:20:06.963097 [INF] Starting nats-server version 0.9.6
[3143] 2017/07/30 20:20:06.963988 [INF] Starting http monitor on 0.0.0.0:8222
[3143] 2017/07/30 20:20:06.964162 [INF] Listening for client connections on 0.0.0.0:4222
[3143] 2017/07/30 20:20:06.964183 [INF] Server is ready
[3143] 2017/07/30 20:20:07.247235 [INF] STREAM: Message store is MEMORY
[3143] 2017/07/30 20:20:07.247366 [INF] STREAM: ---------- Store Limits ----------
[3143] 2017/07/30 20:20:07.247385 [INF] STREAM: Channels: 100 *
[3143] 2017/07/30 20:20:07.247397 [INF] STREAM: --------- Channels Limits --------
[3143] 2017/07/30 20:20:07.247408 [INF] STREAM: Subscriptions: 1000 *
[3143] 2017/07/30 20:20:07.247420 [INF] STREAM: Messages : 1000000 *
[3143] 2017/07/30 20:20:07.247430 [INF] STREAM: Bytes : 976.56 MB *
[3143] 2017/07/30 20:20:07.247457 [INF] STREAM: Age : unlimited *
[3143] 2017/07/30 20:20:07.247471 [INF] STREAM: ----------------------------------
到谷歌浏览器访问192.168.0.31:8222可看到如下监控界面:

使用Go NATS Streaming clients的例子
发布者
stan-pub.go
package main
import (
"github.com/nats-io/go-nats-streaming"
"runtime"
"fmt"
"time"
)
func main() {
//stan.Connect(clusterID, clientID, ops ...Option)
//默认clusterID为test-cluster
ns, err := stan.Connect("test-cluster", "myid", stan.NatsURL("nats://192.168.0.31:4222"))
if err != nil{
panic(err)
}
// Simple Synchronous Publisher
// does not return until an ack has been received from NATS Streaming
t1 :=time.Now().Format("2006-01-02 15:04:05")
//发布50000条消息
for i:=0;i<50000;i++ {
ns.Publish("logp", []byte("hello go"))
}
t2 :=time.Now().Format("2006-01-02 15:04:05")
// 打印发布开始时间和结束时间,可看出发布50000条消息耗时
fmt.Println("开始时间:"+t1, "结束时间"+t2)
ns.Close()
runtime.Goexit()
}
订阅者
stan-sub.go
package main
import (
"github.com/nats-io/go-nats-streaming"
"fmt"
"runtime"
"log"
)
func main() {
//stan.Connect(clusterID, clientID, ops ...Option)
ns, err := stan.Connect("test-cluster", "myid1", stan.NatsURL("nats://192.168.0.31:4222"))
if err != nil{
panic(err)
}
// Simple Synchronous Publisher
// does not return until an ack has been received from NATS Streaming
i:=0
_, err1 := ns.Subscribe("logp",func(msg *stan.Msg){
i++
fmt.Printf("Received a message: %s+%d\n", string(msg.Data),i)
},stan.DurableName("cdn1"))
if err1 != nil{
panic(err1)
}
log.Printf("Listening on [%s]\n", "logp")
runtime.Goexit()
}
我是在IDEA中同时的运行这两个程序,则会看到发布出去的消息被及时的订阅了。
Install and Run NATS Streaming Server的更多相关文章
- NATS_12:NATS Streaming详解
NATS Streaming NATS Streaming是一个以NATS为驱动的数据流系统且它的源码也是由Golang语言编写的.其中NATS Streaming服务是一个可执行的文件名为:nats ...
- Darwin Streaming Server 6.0.3安装、订制、插件或模块
How to setup Darwin Streaming Server 6.0.3 on 32 or 64 bit Linux platforms, add custom functionality ...
- Darwin Streaming Server 简介
Darwin Streaming Server 概要 Darwin Streaming Server简称DSS.DSS是Apple公司提供的开源实时流媒体播放服务器程序.整个程序使用C++编写 ...
- Darwin Streaming Server 安裝操作備忘
Darwin Streaming Server 安裝操作 Darwin Streaming Server是蘋果公司推出的開放源碼.跨平台多媒體串流伺服器, 提供音樂 (mp3) 與影音 (3gp.mp ...
- Linux编译安装Darwin Streaming Server 6.0.3。。。
目前主流的流媒体服务器有微软的windows media server.RealNetworks的Helixserver和苹果公司的Darwin Streaming Server. 微软的window ...
- Linux编译安装Darwin Streaming Server 6.0.3
买回来VPS后就一直想在上面搭建一个流媒体服务,在网上搜索了很多资料,大部分都是介绍Linux中安装Darwin Streaming Server 5.5.5版本,因为这个版本提供了针对linux的安 ...
- Darwin Streaming server 的 Task 类
Darwin Streaming Server 是一个开放源代码的streaming server,对于streaming server的编程和软件结构有着一定的参考价值,它是使用C++写的,其中的并 ...
- Darwin Streaming Server用vs2005编译运行过程
原创. 一:编译 Darwin6.0.3版本是最新版本,也提供了.dsw文件.但是使用vs2005和vc6是编译不过的.所以,采用Darwin5.5.5版本.使用vc6打开WinNTSupport文件 ...
- Install and run DB Query Analyzer 6.04 on Microsoft Windows 10
Install and run DB Query Analyzer 6.04 on Microsoft Windows 10 DB Query Analyzer is presented ...
随机推荐
- AppServ安装的一点小麻烦----
好久,没装AppServ了,今天安装过程顺利,但是Apache,服务开启不了,页面也不能访问. 刚开始以为是版本下载错误了,先后换了N个版本,都不行. 在网上搜的过程中,偶然发现,一句话:64位系统, ...
- Linux文件锁定保护命令chattr介绍
chattr命令的用法:chattr [ -RV ] [ -v version ] [ mode ] files- 最关键的是在[mode]部分,[mode]部分是由+-=和[ASacDdIijsTt ...
- 一篇文章让你搞懂 SSL 证书
关于结婚这件事 那天和同事讨论到底什么才算是真正的「结婚」?这种话题本来是极其不应该存在的.传统意义的领个证书,办个婚礼.吃吃喝喝,但随着社会各族人民身心发展进化,原本那些繁琐流程简直是反人类,貌似现 ...
- PHP完成一个日历
今天我们就用php中的数组合date 做一个日历. 先让我们回顾一下PHP里面的date . 1.时间戳:表示从计算机元年/UNIX纪年(0时区 1970/1/1 00:00:00)到当前事件的秒数. ...
- 用Html5/CSS3做Winform,一步一步教你搭建CefSharp开发环境(附JavaScript异步调用C#例子,及全部源代码)上
本文为鸡毛巾原创,原文地址:http://www.cnblogs.com/jimaojin/p/7077131.html,转载请注明 CefSharp说白了就是Chromium浏览器的嵌入式核心,我们 ...
- 【PHP】最详细PHP从入门到精通(四)——PHP中的字符串
PHP从入门到精通 之PHP中的字符串 大家好,继续跟进PHP最详尽的知识更新,本周,跟大家重点讲一下PHP中字符串的使用.在PHP中,字符串是非常重要的一个概念,基本上大家想到的字符串的处理功能, ...
- MySQL数据表的创建、查看、插入
数据表:数据表(或称表)是数据库最重要的组成部分之一,是其他对象的基础. 1.首先我们打开一个数据库(这里我打开的是新创建的一个aaa数据库). 打开数据库:use + 数据库名; 2 ...
- web前段2017.6.8
<body></body>background='图片路径'---表示背景图片图片:.jpg .png(透明图片) .gif(动态图)... 路径---绝对路径:相对于磁盘的路 ...
- (转载)配置tomcat支持jython
工作需要,特记录下配置tomcat支持jython开发的过程.参考链接:@http://blog.itpub.net/13186779/viewspace-201861/ *环境在win7下搭建,jd ...
- (转载)VB6之鼠标移出事件
转载链接:http://www.ltesting.net/ceshi/ruanjianceshikaifajishu/rjcskfyy/vb/2007/0525/3426.html Windows提供 ...