th queue

สร้าง Queue ส่งข้อความ รับและยืนยันข้อความ และติดตาม Queue แบบ consumer อย่างง่าย

เกี่ยวกับ

Queue Service ส่งข้อความจากส่วนของระบบที่สร้างงาน ไปยัง Worker ที่ทำงานนั้น ข้อความที่รับไปแล้วจะถูกซ่อนตาม Visibility timeout เมื่อทำงานเสร็จให้ยืนยัน (ลบข้อความด้วย receipt) ไม่เช่นนั้นข้อความจะถูกส่งออกไปอีกครั้ง ข้อความถูกส่งอย่างน้อยหนึ่งครั้ง จึงควรออกแบบงานให้ทำซ้ำได้อย่างปลอดภัย

ตั้งค่าค่าเริ่มต้นช่วงที่ตั้งได้
--visibility-timeout30 วินาที0 วินาที – 12 ชั่วโมง
--retention4 วัน1 นาที – 14 วัน
--delay00 – 15 นาที
--max-receives0 (ไม่จำกัด)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

Shell
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

ส่งข้อความ

Shell
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

รับและยืนยันข้อความ

  1. รับข้อความ: th queue receive jobs --max 10 แต่ละข้อความจะแสดงพร้อม receipt
  2. ทำงานให้เสร็จ
  3. ยืนยันทีละข้อความ: th queue ack jobs RECEIPT… หรือใส่ --ack ตอนรับ เพื่อยืนยันทันทีหลังแสดงผล
Shell
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 บรรทัดละหนึ่งข้อความ

Shell
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

ไวยากรณ์

Shell
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 วินาทีต่อข้อความ

Shell
th queue create jobs --visibility-timeout 60s

ย้ายข้อความที่ล้มเหลวไปที่ jobs-dlq

Shell
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 พร้อมจำนวนข้อความที่ค้าง

ไวยากรณ์

Shell
th queue list

ตัวอย่าง

Queue และข้อความที่ค้าง

Shell
th queue list

พารามิเตอร์ส่วนกลาง

คำสั่งนี้รับพารามิเตอร์ส่วนกลางด้วย: --project, --region, --endpoint, --format, --quiet

กลับขึ้นด้านบน ↑

th queue describe

แสดงการตั้งค่า endpoint และข้อความที่ค้างของ Queue

ไวยากรณ์

Shell
th queue describe NAME

ตัวอย่าง

การตั้งค่า endpoint และข้อความที่ค้าง

Shell
th queue describe jobs

อาร์กิวเมนต์ตามตำแหน่ง

ชื่อคำอธิบาย
NAMEจำเป็นชื่อ Queue: 1–80 ตัวอักษร A-Z, a-z, 0-9, _ และ -

พารามิเตอร์ส่วนกลาง

คำสั่งนี้รับพารามิเตอร์ส่วนกลางด้วย: --project, --region, --endpoint, --format, --quiet

กลับขึ้นด้านบน ↑

th queue update

เปลี่ยนการตั้งค่าของ Queue ค่าที่ไม่ได้ระบุจะคงเดิม

ไวยากรณ์

Shell
th queue update NAME [--visibility-timeout 30s] [--retention 4d]
    [--delay 0s] [--max-receives N] [--dead-letter QUEUE|none]

ระยะเวลาใช้รูปแบบ 30s, 5m, 2h, 4d หรือ 1d12h

ตัวอย่าง

เก็บข้อความ 14 วัน

Shell
th queue update jobs --retention 14d

เลิกใช้ Dead-letter queue

Shell
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

ส่งข้อความหนึ่งข้อความ

ไวยากรณ์

Shell
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

Shell
th queue send jobs '{"order": 1042}'

body จากไฟล์ พร้อม attribute

Shell
th queue send jobs --file job.json --attr type=invoice

body จาก standard input

Shell
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)

ไวยากรณ์

Shell
th queue receive NAME [--max 10] [--wait 20s] [--visibility 30s] [--ack]

ข้อความที่รับแล้วจะถูกซ่อนตาม Visibility timeout ให้ยืนยันทุกข้อความที่ทำเสร็จ (th queue ack NAME RECEIPT) ไม่เช่นนั้นข้อความจะถูกส่งออกไปอีกครั้ง --ack ยืนยันทันทีหลังแสดงผล

ตัวอย่าง

รับได้สูงสุด 10 ข้อความ

Shell
th queue receive jobs --max 10

รับหนึ่งข้อความและยืนยันทันที

Shell
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

ไวยากรณ์

Shell
th queue ack NAME RECEIPT...

การยืนยันข้อความซ้ำไม่ถือเป็นข้อผิดพลาด

ตัวอย่าง

ยืนยันข้อความที่ทำเสร็จแล้ว

Shell
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)

ไวยากรณ์

Shell
th queue tail NAME [--no-ack] [--max 10] [--visibility 30s]

ข้อความที่แสดงแล้วจะถูกยืนยัน เว้นแต่ใส่ --no-ack ดังนั้น tail จึงใช้เป็น consumer ได้ เมื่อใส่ --no-ack ข้อความจะถูกส่งออกไปอีกครั้งเมื่อครบ Visibility timeout กด Ctrl+C เพื่อหยุด

ตัวอย่าง

ดึงข้อความจนกว่าจะกด Ctrl+C

Shell
th queue tail jobs

ดูโดยไม่ดึงข้อความออก บรรทัดละหนึ่ง JSON object

Shell
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 และจำนวนครั้งที่รับไม่เปลี่ยน)

ไวยากรณ์

Shell
th queue peek NAME

ตัวอย่าง

ดูข้อความที่รออยู่โดยไม่รับออกไป

Shell
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 ยังอยู่

ไวยากรณ์

Shell
th queue purge NAME [--quiet]

--quiet ข้ามการยืนยัน

ตัวอย่าง

ลบทุกข้อความ โดยไม่ถามยืนยัน

Shell
th queue purge jobs --quiet

อาร์กิวเมนต์ตามตำแหน่ง

ชื่อคำอธิบาย
NAMEจำเป็นชื่อ Queue: 1–80 ตัวอักษร A-Z, a-z, 0-9, _ และ -

พารามิเตอร์ส่วนกลาง

คำสั่งนี้รับพารามิเตอร์ส่วนกลางด้วย: --project, --region, --endpoint, --format, --quiet

กลับขึ้นด้านบน ↑

th queue delete

ลบ Queue พร้อมทุกข้อความ

ไวยากรณ์

Shell
th queue delete NAME [--quiet]

--quiet ข้ามการยืนยัน

ตัวอย่าง

ลบ Queue และข้อความ

Shell
th queue delete jobs

อาร์กิวเมนต์ตามตำแหน่ง

ชื่อคำอธิบาย
NAMEจำเป็นชื่อ Queue: 1–80 ตัวอักษร A-Z, a-z, 0-9, _ และ -

พารามิเตอร์ส่วนกลาง

คำสั่งนี้รับพารามิเตอร์ส่วนกลางด้วย: --project, --region, --endpoint, --format, --quiet

กลับขึ้นด้านบน ↑