ตามเอกสารของ PostgreSQL เกี่ยวกับNOTIFY
:
คำสั่ง NOTIFY ส่งเหตุการณ์การแจ้งเตือนพร้อมกับสตริง "payload" ที่เป็นตัวเลือกให้กับแต่ละแอปพลิเคชันไคลเอนต์ที่ได้ดำเนินการช่อง LISTEN ก่อนหน้านี้สำหรับชื่อช่องที่ระบุในฐานข้อมูลปัจจุบัน การแจ้งเตือนจะปรากฏต่อผู้ใช้ทุกคน
(เน้นที่เหมือง)
ซึ่งหมายความว่าคุณไม่สามารถทำสิ่งที่คุณต้องการเพียงกับ LISTEN/NOTIFY
อย่างไรก็ตามคุณสามารถมีทั้งตารางในการจัดเก็บข้อความที่ถูกจัดคิวLISTEN/NOTIFY
เพื่อแจ้งเตือนแอปพลิเคชันภายนอกว่า "มีสิ่งใหม่ในคิวข้อความ" และใช้ตรรกะพิเศษบางอย่างจากแอปพลิเคชันภายนอกเหล่านี้
กลยุทธ์ดังที่อธิบายไว้ในบทความการล็อคข้ามไปใน PostgreSQL 9.5 คืออะไร อาจเป็นวิธีที่ปลอดภัยที่สุด / ง่ายที่สุดในการใช้คิวข้อความภายใน PostgreSQL ให้ความสนใจเป็นพิเศษกับส่วน "วิธีที่ SKIP LOCKED ช่วย" อ่านอย่างระมัดระวังหนึ่งในคำเตือนของพวกเขา:
คิวที่นำมาใช้ใน RDBMS จะไม่ตรงกับประสิทธิภาพของระบบการจัดคิวที่รวดเร็วโดยเฉพาะแม้แต่คิวเดียวที่ทำให้การรับประกันแบบอะตอมมิกและความทนทานเท่ากับ PostgreSQL การใช้ SKIP LOCKED ดีกว่าวิธีการในฐานข้อมูลที่มีอยู่ แต่คุณจะยังคงทำงานได้เร็วขึ้นโดยใช้เครื่องมือจัดคิวภายนอกที่ได้รับการปรับแต่งแล้ว
สิ่งนี้สำคัญเป็นพิเศษหากปริมาณคิวสูง