Menurut dokumentasi PostgreSQL tentangNOTIFY
:
Perintah NOTIFY mengirimkan acara pemberitahuan bersama dengan string "payload" opsional untuk setiap aplikasi klien yang sebelumnya telah mengeksekusi saluran LISTEN untuk nama saluran yang ditentukan dalam database saat ini. Pemberitahuan dapat dilihat oleh semua pengguna .
(penekanan milikku)
Ini berarti Anda tidak dapat melakukan apa yang Anda inginkan hanya dengan LISTEN/NOTIFY
. Namun, Anda dapat memiliki kedua tabel untuk menyimpan pesan yang antri, LISTEN/NOTIFY
untuk memberi tahu aplikasi eksternal bahwa "ada hal-hal baru dalam antrian pesan", dan menggunakan beberapa logika tambahan dari aplikasi eksternal ini sehingga hanya satu yang mengkonsumsi pesan tersebut.
Strategi yang digambarkan dalam artikel Apa itu SKIP LOCKED di dalam PostgreSQL 9.5? mungkin cara teraman / termudah untuk mengimplementasikan antrian pesan di dalam PostgreSQL. Berikan perhatian khusus pada bagian "Bagaimana SKIP LOCKED membantu". Baca juga dengan seksama salah satu peringatan mereka:
Antrian yang diterapkan dalam RDBMS tidak akan pernah cocok dengan kinerja sistem antrian yang didedikasikan cepat, bahkan yang membuat atomicity dan jaminan daya tahan yang sama seperti PostgreSQL. Menggunakan SKIP LOCKED lebih baik daripada pendekatan dalam-basis data yang ada, tetapi Anda masih akan lebih cepat menggunakan mesin antrian eksternal yang berdedikasi dan sangat dioptimalkan.
Ini sangat penting jika volume antrian tinggi.