ทาง Apache Kafka 4.0 เพิ่งปล่อยออกมา
ซึ่งเพิ่ม Queue เข้ามาให้ลองใช้ด้วย (early access เท่านั้น)
เคยเขียนอธิบายไว้แล้วที่ น่าสนใจสำหรับ KIP-932: Queues for Kafka
ดังนั้นเรามาลองใช้งานกันหน่อยว่าเป็นอย่างไร
มาเริ่มกันเลย

โดยจะใช้สิ่งที่เรียกว่า share group
ไว้จัดการข้อมูลจาก topic อีกรอบ
มองดูแล้วอาจจะคล้ายกัย consumer group แต่ไม่เหมือนกัน
นั่นคือ
consumer ต่าง ๆ ใน share group นั้น
สามารถ process ข้อมูลจาก topic เดียวกัน และ partition เดียวกันได้
นั่นคือสามารถมี active consumer มากกว่าจำนวน partition ของ topic นั้น ๆ ได้

โดยที่ consumer ต่าง ๆ ที่อยู่ใน share group เดียวกัน
จะใช้ consumer rebalance protocol ใหม่จาก KIP-898
ซึ่งจะเรียก partition ที่ใช้งานของ share group ว่า share partition

มาลองเขียน code ใช้งานกันดีกว่า

โดยที่ client library ภาษาต่าง ๆ ยังไม่ support
เลยใช้ภาษา Java ซึ่งเป็น official ที่สนับสนุนแล้ว (ใน Spring for Kafka ยังไม่สนับสนุน)

ขั้นตอนที่ 1 ทำการ Start Kafka Broker

ทำการเปิดการใช้งาน experiment feature และ share group ดังนี้

ทำการ start server ขึ้นมา จะแจ้งว่าสิ่งที่ใช้งานคือ KIP-932
อย่าใช้บน production !!

ขั้นตอนที่ 2 ทำการสร้าง Consumer เพื่อใช้งาน Queue หรือ share group

โดยใช้งาน Java Kafka client มีตัวอย่างของการใช้งานผ่าน Apache Maven

จากนั้นเขียน consumer ขึ้นมา ซึ่งกำหนดค่าต่าง ๆ ดังนี้

  • group.id คือ share group นั่นเอง ซึ่ง message ใน topic ที่กำหนดไว้ จะเข้ามาเรียงคิวที่ group นี้ให้เอง

ผลการทำงานของ consumer เป็นดังนี้

สามารถตรวจสอบได้ว่า ตอนนี้มี share group อะไรบ้าง
และมี offset ค่าเท่าไร
และ share group นั้นมากี่ partition
ส่วนฝั่งของ producer ไม่ได้เปลี่ยนอะไร ส่ง message ไปยัง topic ที่ต้องการปกติ

เพียงเท่านี้ก็สามารถใช้งาน Queue ใน Kafka ได้แล้ว
ซึ่งแนวทางนี้ก็ต้องระวังเรื่องของท่อตันด้วย
ถ้ามีบาง message ทำงานใน consumer ช้า หรือ ใช้เวลานาน !!
ลองเล่นกันดู

Reference Websites