# NATS 는 golang 으로 만들어진 가볍고 빠른 메시지 큐잉 시스템으로
# 최근 MSA(MicroServiceArchitecture), kubernetes,
# service-mesh(msa 환경에서 네트워크가 mesh 구조)환경에서 많이 사용한다.
# NATS 서버 설치
# 서버 환경에 맞는 패키지 다운로드 및 실행
wget https://github.com/nats-io/nats-server/releases/download/v2.1.0/nats-server-v2.1.0-darwin-amd64.zip
wget https://github.com/nats-io/nats-server/releases/download/v2.1.6/nats-server-v2.1.6-linux-amd64.zip
unzip nats-server-v2.1.0-darwin-amd64.zip
cd nats-server-v2.1.0-darwin-amd64
./nats-server
# NATS 의 기능 중 Publish/Subscribe 사용하기
# telnet 으로 클라이언트 2개 접속해놓자
telnet localhost 4222
# 클라이언트1
# ysoftman 이름을 1(subscription ID, sid)로 설정해 subscribe 한다.
sub ysoftman 1
# 클라이언트2
# ysoftman 라는 이름으로
# lemon 의 5바이트 데이터(payload)를 publish 한다.
pub ysoftman 5
lemon
# ysoftman 을 subscribe 하는 클라이언트1에 lemon 데이터가 전달된다.
# 프로토콜 참고
https://docs.nats.io/nats-protocol/nats-protocol
# nats 는 c, go, nginx, python 등 다양한 client 언어를 지원하고 있다.
https://nats.io/download/
# telnet 외에 nats pub, sub 클라이언트 프로그램을 다운받아 사용할 수 있다.
# https://docs.nats.io/nats-server/clients
go get github.com/nats-io/go-nats-examples/tools/nats-pub
go get github.com/nats-io/go-nats-examples/tools/nats-sub
# nats pub 의 경우 데이터 크기를 명시하지 않아도 된다.
nats-pub -s ysoftman:1234@localhost:4222 ysoftman lemon
# nats sub 로 ysoftman 에 대해 subscribe
nats-sub -s ysoftman:1234@localhost:4222 ysoftman