Re: Listen/Notify feedback - Mailing list pgsql-general

From Michel Pelletier
Subject Re: Listen/Notify feedback
Date
Msg-id CACxu=vK5LEZcLn2=oJuHAY84b5UxUiD=FBYyK2ZjeUSA6agx1w@mail.gmail.com
Whole thread Raw
In response to Re: Listen/Notify feedback  (Brian Dunavant <dunavant@gmail.com>)
List pgsql-general


On Sat, Jul 11, 2020 at 10:44 AM Brian Dunavant <dunavant@gmail.com> wrote:
One aspect is if there is no one listening when a notify happens, the message is lost (e.g. no durability).   If this is important to you, it can be addressed by writing the messages to a table as well when you NOTIFY, and the listener deletes messages after they are processed.  On connection the listener can query the table to catch up on any missed messages, or messages that were mid-process during a crash.  This is trickier with more than one listener.   This isn't a whole lot more efficient than just using the table alone, but it saves you from having to poll so better response times.

Good advice from Brian here that mirrors my own experience, I'd like to point out that if you do go the multiple listener route working a persistent table, it's important to avoid races with SELECT FOR UPDATE SKIP LOCKED.


I know this is old news to most of the people on this list, but I've run into enough folks who don't know about this little gem that I figured I'd mention it, it's saved my bacon more than once.

-Michel


On Sat, Jul 11, 2020 at 8:58 AM Rita <rmorgan466@gmail.com> wrote:
I am investigating various pub/sub tools such as ActiveMQ, Rabbit, Redis, etc.I came across Postgresql Listen/Notify and was easily able to write code to listen to messages. For the people who have been using this for a while: what are its downsides, things to consider when writing good code that use pub/sub, how do you deal with large messages, can I have subscribers listen to replica nodes?

Thanks
--
--- Get your facts first, then you can distort them as you please.--

pgsql-general by date:

Previous
From: Rita
Date:
Subject: Re: Listen/Notify feedback
Next
From: Anto Aravinth
Date:
Subject: