เกี่ยวกับ
Queue Service ส่งข้อความจากส่วนของระบบที่สร้างงาน ไปยัง Worker ที่ทำงานนั้น ข้อความที่รับไปแล้วจะถูกซ่อนตาม Visibility timeout เมื่อทำงานเสร็จให้ยืนยัน (ลบข้อความด้วย receipt) ไม่เช่นนั้นข้อความจะถูกส่งออกไปอีกครั้ง ข้อความถูกส่งอย่างน้อยหนึ่งครั้ง จึงควรออกแบบงานให้ทำซ้ำได้อย่างปลอดภัย
| ตั้งค่า | ค่าเริ่มต้น | ช่วงที่ตั้งได้ |
|---|---|---|
--visibility-timeout | 30 วินาที | 0 วินาที – 12 ชั่วโมง |
--retention | 4 วัน | 1 นาที – 14 วัน |
--delay | 0 | 0 – 15 นาที |
--max-receives | 0 (ไม่จำกัด) | 0 – 1,000 แล้วย้ายไปที่ Queue ใน --dead-letter |
ข้อความหนึ่งมีขนาดได้ไม่เกิน 256 KiB รวม body และ attribute ระยะเวลาใช้รูปแบบ 30s, 5m, 2h, 4d หรือ 1d12h คำสั่งที่ทำงานกับข้อความใช้ Access key ของ Queue Service (Key ชั่วคราวเมื่อคุณเข้าสู่ระบบ หรือ TH_QUEUE_KEY_ID / TH_QUEUE_SECRET) ดูเพิ่มที่ Queue Service ทำงานอย่างไร
คู่มือการใช้งาน
สร้าง Queue พร้อม Dead-letter queue
th queue create jobs-dlq
th queue create jobs --visibility-timeout 60s --max-receives 5 --dead-letter jobs-dlqข้อความที่ถูกรับเกิน 5 ครั้งโดยไม่ได้ยืนยัน จะย้ายไปที่ jobs-dlq ซึ่งดูได้ด้วย th queue peek jobs-dlq
ส่งข้อความ
th queue send jobs '{"order": 1042}'
th queue send jobs --file job.json --attr type=invoice
echo "hello" | th queue send jobs -
th queue send jobs '{"order": 1043}' --delay 10sรับและยืนยันข้อความ
- รับข้อความ:
th queue receive jobs --max 10แต่ละข้อความจะแสดงพร้อม receipt - ทำงานให้เสร็จ
- ยืนยันทีละข้อความ:
th queue ack jobs RECEIPT…หรือใส่--ackตอนรับ เพื่อยืนยันทันทีหลังแสดงผล
th queue receive jobs --max 10 --wait 20s
th queue ack jobs <receipt-1> <receipt-2>ติดตาม Queue
th queue tail รอรับข้อความ แสดงแต่ละข้อความแล้วยืนยัน จนกว่าคุณจะกด Ctrl+C ใช้ --no-ack เพื่อดูโดยไม่ดึงข้อความออก (ข้อความจะกลับมาเมื่อครบ Visibility timeout) และ --format json เพื่อแสดง JSON บรรทัดละหนึ่งข้อความ
th queue tail jobs
th queue tail jobs --no-ack --format json | jq .bodyคำสั่ง
| คำสั่ง | คำอธิบาย |
|---|---|
th queue create | สร้าง Queue |
th queue list | แสดง Queue ของ Project พร้อมจำนวนข้อความที่ค้าง |
th queue describe | แสดงการตั้งค่า endpoint และข้อความที่ค้างของ Queue |
th queue update | เปลี่ยนการตั้งค่าของ Queue ค่าที่ไม่ได้ระบุจะคงเดิม |
th queue send | ส่งข้อความหนึ่งข้อความ |
th queue receive | รับข้อความได้สูงสุด --max ข้อความ (1-10 ค่าเริ่มต้น 1) โดยรอข้อความแรกได้นานสุด --wait (ไม่เกิน 20s) |
th queue ack | ยืนยัน (ลบ) ข้อความที่รับแล้วด้วย receipt |
th queue tail | รับข้อความเมื่อมีเข้ามา (long polling) และแสดงทีละข้อความ (บรรทัดละหนึ่ง JSON object เมื่อใช้ --format json) |
th queue peek | แสดงข้อความที่รออยู่ได้สูงสุด 10 ข้อความ โดยไม่รับออกไป (ข้อความยังอยู่ใน Queue และจำนวนครั้งที่รับไม่เปลี่ยน) |
th queue purge | ลบทุกข้อความใน Queue โดย Queue ยังอยู่ |
th queue delete | ลบ Queue พร้อมทุกข้อความ |
th queue create
สร้าง Queue
ไวยากรณ์
th queue create NAME [--region REGION] [--visibility-timeout 30s]
[--retention 4d] [--delay 0s] [--max-receives N --dead-letter QUEUE]ชื่อมี 1-80 ตัวอักษร A-Z, a-z, 0-9, _ และ - ค่าที่ไม่ได้ระบุจะใช้ค่าเริ่มต้นของบริการ ระยะเวลาใช้รูปแบบ 30s, 5m, 2h, 4d หรือ 1d12h
ตัวอย่าง
Worker มีเวลา 60 วินาทีต่อข้อความ
th queue create jobs --visibility-timeout 60sย้ายข้อความที่ล้มเหลวไปที่ jobs-dlq
th queue create jobs --max-receives 5 --dead-letter jobs-dlqอาร์กิวเมนต์ตามตำแหน่ง
| ชื่อ | คำอธิบาย |
|---|---|
NAMEจำเป็น | ชื่อ Queue: 1–80 ตัวอักษร A-Z, a-z, 0-9, _ และ - |
พารามิเตอร์
| ชื่อ | ชนิด | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
--visibility-timeout | ข้อความ | ระยะเวลาที่ข้อความที่รับไปแล้วถูกซ่อน (เช่น 30s, 5m, 12h) | |
--retention | ข้อความ | ระยะเวลาที่เก็บข้อความไว้ (เช่น 1h, 4d, 14d) | |
--delay | ข้อความ | ระยะเวลาก่อนข้อความใหม่จะรับได้ (เช่น 0s, 10s, 15m) | |
--max-receives | ตัวเลข | จำนวนครั้งที่รับได้ก่อนข้อความถูกย้ายไป Dead-letter queue (0 = ไม่จำกัด) | |
--dead-letter | ข้อความ | Dead-letter queue ใน Project เดียวกัน ("" หรือ none เพื่อเลิกใช้) |
พารามิเตอร์ส่วนกลาง
คำสั่งนี้รับพารามิเตอร์ส่วนกลางด้วย: --project, --region, --endpoint, --format, --quiet
th queue list
แสดง Queue ของ Project พร้อมจำนวนข้อความที่ค้าง
ไวยากรณ์
th queue listตัวอย่าง
Queue และข้อความที่ค้าง
th queue listพารามิเตอร์ส่วนกลาง
คำสั่งนี้รับพารามิเตอร์ส่วนกลางด้วย: --project, --region, --endpoint, --format, --quiet
th queue describe
แสดงการตั้งค่า endpoint และข้อความที่ค้างของ Queue
ไวยากรณ์
th queue describe NAMEตัวอย่าง
การตั้งค่า endpoint และข้อความที่ค้าง
th queue describe jobsอาร์กิวเมนต์ตามตำแหน่ง
| ชื่อ | คำอธิบาย |
|---|---|
NAMEจำเป็น | ชื่อ Queue: 1–80 ตัวอักษร A-Z, a-z, 0-9, _ และ - |
พารามิเตอร์ส่วนกลาง
คำสั่งนี้รับพารามิเตอร์ส่วนกลางด้วย: --project, --region, --endpoint, --format, --quiet
th queue update
เปลี่ยนการตั้งค่าของ Queue ค่าที่ไม่ได้ระบุจะคงเดิม
ไวยากรณ์
th queue update NAME [--visibility-timeout 30s] [--retention 4d]
[--delay 0s] [--max-receives N] [--dead-letter QUEUE|none]ระยะเวลาใช้รูปแบบ 30s, 5m, 2h, 4d หรือ 1d12h
ตัวอย่าง
เก็บข้อความ 14 วัน
th queue update jobs --retention 14dเลิกใช้ Dead-letter queue
th queue update jobs --dead-letter noneอาร์กิวเมนต์ตามตำแหน่ง
| ชื่อ | คำอธิบาย |
|---|---|
NAMEจำเป็น | ชื่อ Queue: 1–80 ตัวอักษร A-Z, a-z, 0-9, _ และ - |
พารามิเตอร์
| ชื่อ | ชนิด | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
--visibility-timeout | ข้อความ | ระยะเวลาที่ข้อความที่รับไปแล้วถูกซ่อน (เช่น 30s, 5m, 12h) | |
--retention | ข้อความ | ระยะเวลาที่เก็บข้อความไว้ (เช่น 1h, 4d, 14d) | |
--delay | ข้อความ | ระยะเวลาก่อนข้อความใหม่จะรับได้ (เช่น 0s, 10s, 15m) | |
--max-receives | ตัวเลข | จำนวนครั้งที่รับได้ก่อนข้อความถูกย้ายไป Dead-letter queue (0 = ไม่จำกัด) | |
--dead-letter | ข้อความ | Dead-letter queue ใน Project เดียวกัน ("" หรือ none เพื่อเลิกใช้) |
พารามิเตอร์ส่วนกลาง
คำสั่งนี้รับพารามิเตอร์ส่วนกลางด้วย: --project, --region, --endpoint, --format, --quiet
th queue send
ส่งข้อความหนึ่งข้อความ
ไวยากรณ์
th queue send NAME [MESSAGE | - | --file FILE] [--attr KEY=VALUE ...] [--delay 10s]body คือ MESSAGE, เนื้อหาของ FILE หรือ standard input เมื่อ MESSAGE เป็น - ข้อความหนึ่งมีขนาดได้ไม่เกิน 256 KiB (รวม body และ attribute) --delay ซ่อนข้อความไว้ก่อนได้นานสุด 15m (ค่าเริ่มต้น: ตามค่าของ Queue)
ตัวอย่าง
ส่ง body แบบ JSON
th queue send jobs '{"order": 1042}'body จากไฟล์ พร้อม attribute
th queue send jobs --file job.json --attr type=invoicebody จาก standard input
echo "hello" | th queue send jobs -อาร์กิวเมนต์ตามตำแหน่ง
| ชื่อ | คำอธิบาย |
|---|---|
NAMEจำเป็น | ชื่อ Queue: 1–80 ตัวอักษร A-Z, a-z, 0-9, _ และ - |
MESSAGE|-ไม่บังคับ | body ของข้อความ หรือ - เพื่ออ่านจาก standard input ไม่ต้องใส่เมื่อใช้ --file |
พารามิเตอร์
| ชื่อ | ชนิด | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
--file | ข้อความ | อ่าน body จาก FILE | |
--attr | รายการ | attribute KEY=VALUE (ระบุซ้ำได้) | |
--delay | ข้อความ | ระยะเวลาก่อนรับได้ (เช่น 10s, 5m) |
พารามิเตอร์ส่วนกลาง
คำสั่งนี้รับพารามิเตอร์ส่วนกลางด้วย: --project, --region, --endpoint, --format, --quiet
th queue receive
รับข้อความได้สูงสุด --max ข้อความ (1-10 ค่าเริ่มต้น 1) โดยรอข้อความแรกได้นานสุด --wait (ไม่เกิน 20s)
ไวยากรณ์
th queue receive NAME [--max 10] [--wait 20s] [--visibility 30s] [--ack]ข้อความที่รับแล้วจะถูกซ่อนตาม Visibility timeout ให้ยืนยันทุกข้อความที่ทำเสร็จ (th queue ack NAME RECEIPT) ไม่เช่นนั้นข้อความจะถูกส่งออกไปอีกครั้ง --ack ยืนยันทันทีหลังแสดงผล
ตัวอย่าง
รับได้สูงสุด 10 ข้อความ
th queue receive jobs --max 10รับหนึ่งข้อความและยืนยันทันที
th queue receive jobs --ackอาร์กิวเมนต์ตามตำแหน่ง
| ชื่อ | คำอธิบาย |
|---|---|
NAMEจำเป็น | ชื่อ Queue: 1–80 ตัวอักษร A-Z, a-z, 0-9, _ และ - |
พารามิเตอร์
| ชื่อ | ชนิด | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
--max | ตัวเลข | 1 | จำนวนข้อความที่จะรับ 1-10 |
--wait | ข้อความ | long-poll รอข้อความแรกได้นานสุดเท่านี้ (ไม่เกิน 20s) | |
--visibility | ข้อความ | ซ่อนข้อความที่รับเป็นเวลาเท่านี้ แทน timeout ของ Queue | |
--ack | แฟล็ก | ยืนยัน (ลบ) ข้อความหลังแสดงผล |
พารามิเตอร์ส่วนกลาง
คำสั่งนี้รับพารามิเตอร์ส่วนกลางด้วย: --project, --region, --endpoint, --format, --quiet
th queue ack
ยืนยัน (ลบ) ข้อความที่รับแล้วด้วย receipt
ไวยากรณ์
th queue ack NAME RECEIPT...การยืนยันข้อความซ้ำไม่ถือเป็นข้อผิดพลาด
ตัวอย่าง
ยืนยันข้อความที่ทำเสร็จแล้ว
th queue ack jobs <receipt>อาร์กิวเมนต์ตามตำแหน่ง
| ชื่อ | คำอธิบาย |
|---|---|
NAMEจำเป็น | ชื่อ Queue: 1–80 ตัวอักษร A-Z, a-z, 0-9, _ และ - |
RECEIPT…จำเป็น | receipt ที่แสดงพร้อมข้อความแต่ละข้อความที่รับ ใส่หลายตัวเพื่อยืนยันพร้อมกันได้ |
พารามิเตอร์ส่วนกลาง
คำสั่งนี้รับพารามิเตอร์ส่วนกลางด้วย: --project, --region, --endpoint, --format, --quiet
th queue tail
รับข้อความเมื่อมีเข้ามา (long polling) และแสดงทีละข้อความ (บรรทัดละหนึ่ง JSON object เมื่อใช้ --format json)
ไวยากรณ์
th queue tail NAME [--no-ack] [--max 10] [--visibility 30s]ข้อความที่แสดงแล้วจะถูกยืนยัน เว้นแต่ใส่ --no-ack ดังนั้น tail จึงใช้เป็น consumer ได้ เมื่อใส่ --no-ack ข้อความจะถูกส่งออกไปอีกครั้งเมื่อครบ Visibility timeout กด Ctrl+C เพื่อหยุด
ตัวอย่าง
ดึงข้อความจนกว่าจะกด Ctrl+C
th queue tail jobsดูโดยไม่ดึงข้อความออก บรรทัดละหนึ่ง JSON object
th queue tail jobs --no-ack --format jsonอาร์กิวเมนต์ตามตำแหน่ง
| ชื่อ | คำอธิบาย |
|---|---|
NAMEจำเป็น | ชื่อ Queue: 1–80 ตัวอักษร A-Z, a-z, 0-9, _ และ - |
พารามิเตอร์
| ชื่อ | ชนิด | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
--max | ตัวเลข | 10 | จำนวนข้อความต่อการรับหนึ่งครั้ง 1-10 |
--visibility | ข้อความ | ซ่อนข้อความที่รับเป็นเวลาเท่านี้ แทน timeout ของ Queue | |
--ack | แฟล็ก | true | ยืนยันทุกข้อความที่แสดง (ค่าเริ่มต้น true; --no-ack ไม่ยืนยัน) ใช้ --no-ack เพื่อปิด |
พารามิเตอร์ส่วนกลาง
คำสั่งนี้รับพารามิเตอร์ส่วนกลางด้วย: --project, --region, --endpoint, --format, --quiet
th queue peek
แสดงข้อความที่รออยู่ได้สูงสุด 10 ข้อความ โดยไม่รับออกไป (ข้อความยังอยู่ใน Queue และจำนวนครั้งที่รับไม่เปลี่ยน)
ไวยากรณ์
th queue peek NAMEตัวอย่าง
ดูข้อความที่รออยู่โดยไม่รับออกไป
th queue peek jobs-dlqอาร์กิวเมนต์ตามตำแหน่ง
| ชื่อ | คำอธิบาย |
|---|---|
NAMEจำเป็น | ชื่อ Queue: 1–80 ตัวอักษร A-Z, a-z, 0-9, _ และ - |
พารามิเตอร์ส่วนกลาง
คำสั่งนี้รับพารามิเตอร์ส่วนกลางด้วย: --project, --region, --endpoint, --format, --quiet
th queue purge
ลบทุกข้อความใน Queue โดย Queue ยังอยู่
ไวยากรณ์
th queue purge NAME [--quiet]--quiet ข้ามการยืนยัน
ตัวอย่าง
ลบทุกข้อความ โดยไม่ถามยืนยัน
th queue purge jobs --quietอาร์กิวเมนต์ตามตำแหน่ง
| ชื่อ | คำอธิบาย |
|---|---|
NAMEจำเป็น | ชื่อ Queue: 1–80 ตัวอักษร A-Z, a-z, 0-9, _ และ - |
พารามิเตอร์ส่วนกลาง
คำสั่งนี้รับพารามิเตอร์ส่วนกลางด้วย: --project, --region, --endpoint, --format, --quiet
th queue delete
ลบ Queue พร้อมทุกข้อความ
ไวยากรณ์
th queue delete NAME [--quiet]--quiet ข้ามการยืนยัน
ตัวอย่าง
ลบ Queue และข้อความ
th queue delete jobsอาร์กิวเมนต์ตามตำแหน่ง
| ชื่อ | คำอธิบาย |
|---|---|
NAMEจำเป็น | ชื่อ Queue: 1–80 ตัวอักษร A-Z, a-z, 0-9, _ และ - |
พารามิเตอร์ส่วนกลาง
คำสั่งนี้รับพารามิเตอร์ส่วนกลางด้วย: --project, --region, --endpoint, --format, --quiet