![](http://www.somkiat.cc/wp-content/uploads/2022/07/nats-jeststream-1024x379.png)
เห็นว่า NATS นั้นมี JetStream มาให้ใช้งาน
เพื่อมาจัดการปัญหาเรื่องของ persistence และ นโยบายการ delivery message
รวมทั้งให้ง่ายต่อการ scale และรองรับข้อมูลขนาดใหญ่
สามารถดูเป้าหมายการออกแบบของ JetStream เพิ่มได้ที่นี่
โดยที่การทำงานของ JetStream นั้น จะรองรับทั้งแบบ push และ pull message
แสดงดังรูป
![](http://www.somkiat.cc/wp-content/uploads/2022/07/nats-jeststream-02.png)
เพื่อความสนุกสนาน มาลองใช้งานกันดีกว่า
โดย software ที่ใช้งานใน blog นี้ประกอบไปด้วย
ขั้นตอนที่ 1 ทำการ start NATS JetStream Server ด้วย Docker
[gist id="0748d35cc61f6b2173729328e9fdfa07" file="docker-compose.yml"]ทำการ start server ดังนี้
[gist id="0748d35cc61f6b2173729328e9fdfa07" file="1.txt"]ขั้นตอนที่ 2 ทำการเขียน codeด้วยภาษา Go สำหรับ connect ไปยัง NATS server
เชื่อมต่อไปยัง NATS server ผ่าน port 4242
ทำการสร้าง stream ชื่อว่า data ในกรณีที่ยังไม่มีการสร้าง
ขั้นตอนที่ 3 ทำการสร้างส่วนของ Publisher เพื่อสร้าง message เข้าไปยัง demo.data
[gist id="0748d35cc61f6b2173729328e9fdfa07" file="pub.go"]ขั้นตอนที่ 4 ทำการสร้างส่วนของ Subscriber เพื่อรับ message จาก demo.data
ซึ่งทำงานแบบ push ดังนี้
[gist id="0748d35cc61f6b2173729328e9fdfa07" file="sub.go"]เพียงเท่านี้ก็สามารถเริ่มต้นใช้งาน NATS JetStream Server ได้แล้ว
รวมทั้งเขียน code ด้วยภาษา Go เพื่อ publish/subscribe ข้อมูลแบบง่าย ๆ อีกด้วย