เห็นว่า NATS นั้นมี JetStream มาให้ใช้งาน
เพื่อมาจัดการปัญหาเรื่องของ persistence และ นโยบายการ delivery message
รวมทั้งให้ง่ายต่อการ scale และรองรับข้อมูลขนาดใหญ่
สามารถดูเป้าหมายการออกแบบของ JetStream เพิ่มได้ที่นี่
โดยที่การทำงานของ JetStream นั้น จะรองรับทั้งแบบ push และ pull message
แสดงดังรูป
เพื่อความสนุกสนาน มาลองใช้งานกันดีกว่า
โดย 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 ข้อมูลแบบง่าย ๆ อีกด้วย