nats是一个轻量级的消息系统,在CloudFoundry中作为消息总线存在,各个组件之间的交互除了少量的http直接请求,大部分交互基于nats消息的传递。
基本使用
之前是基于EM的ruby版本,后来又用Golang重写了,go版本地址https://github.com/nats-io/gnatsd;
有多个语言的客户端,go client的github地址https://github.com/nats-io/nats;
具体使用参照文档,还是比较简单的
CF中的使用
1)ruby nats client方式
一种是使用cf中现有的nats客户端,cf v2中有很多ruby写的组件,cloudcontroller、dea等,可以在这些组件直接用ruby版本的nats client,使用方式如下:
$ #dea
$ cd /var/vcap/packages/dea_next/vendor/bundle/ruby/1.9.1/gems/nats-0.5.0.beta.16/
$ /var/vcap/packages/ruby/bin/bundle exec ./bin/nats-sub 'router.register' -s nats://nats:c1oudc0w@$(NATS_IP):$(NATS_PORT) #监听"router.register"消息内容
通过监听“router.register”可以查看所有的想Gorouter的消息,比如ap向router注册的地址;
通过监听“staging.*.start“可以查询staging阶段app打包所对应的dea节点;
通过监听“dea.*.start“可以查到app最终部署在哪个dea节点之上;
2)go client
go语言甚是方便,可以自己编译一个go client二进制文件,再使用上述监听方式;
地址:https://github.com/nats-io/nats/tree/master/examples
nats-sub.go
使用方式与ruby的基本一致
Usage: nats-sub [-s server] [--tls] [-t] <subject>