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 ...
随机推荐
- Deep Q-Network 学习笔记(一)—— Q-Learning 学习与实现过程中碰到的一些坑
这方面的资料比较零散,学起来各种碰壁,碰到各种问题,这里就做下学习记录. 参考资料: https://morvanzhou.github.io/ 非常感谢莫烦老师的教程 http://mnemstud ...
- 删除iPhone图片,提示“没有删除此项目的权限”
解决方法:设置-照片与相机-iCloud照片图库-关闭 (IOS10)
- Spring boot 1: 使用IDEA创建Spring boot项目
项目用到的环境: Windows 10 JDK8 IntelliJ IDEA 2017.1.3 Apache Tomcat 8 Maven 3.3.3 使用IDEA新建spring boot项目 新建 ...
- java 类变量的初始化
有代码如下:class Price{ final static Price INSTANCE = NEW Price(2.8); static double initPrice = 20; ...
- 【LeetCode】105 & 106. Construct Binary Tree from Inorder and Postorder Traversal
题目: Given inorder and postorder traversal of a tree, construct the binary tree. Note:You may assume ...
- 【Android Developers Training】 2. 运行你的应用
注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...
- Egret的项目结构
这是我新建的一个Egret EUI项目 .wing文件夹是项目的配置文件 bin-debug 文件夹,项目编译和运行的debug目录 libs 文件夹,存放库文件,包括 Egret 核心库,其他扩展库 ...
- 基于Dapper的分页实现,支持筛选,排序,结果集总数,非存储过程
简介 之前事先搜索了下博客园上关于Dapper分页的实现,有是有,但要么是基于存储过程,要么支持分页,而不支持排序,或者搜索条件不是那么容易维护. 代码 首先先上代码: https://github. ...
- spring +springmvc+mybatis组合mybatis-config.xml文件配置
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configurationPUBLIC &q ...
- python编程快速上手之第3章实践项目参考答案
1 #!/usr/bin/env python 2 # coding:utf-8 3 # write by mfyang 4 # collatz.py 5 # 从用户读入一个值,并判断这个值是不是一个 ...