Postgresql 如何正确使用Postgres触发器中的任务队列

Postgresql 如何正确使用Postgres触发器中的任务队列,postgresql,triggers,rabbitmq,celery,Postgresql,Triggers,Rabbitmq,Celery,我当前的体系结构有多个web应用程序和一个存储点—我的postgres数据库。现在,我想在数据库中发生某些事情时实现一些任务,例如在新用户创建时发送电子邮件,如果某些值已更改,则通知管理员,等等 因此,天真的方法是创建成吨的触发器,这些触发器对于每个操作都是特定的。现在,我认为这不是一个好主意,因为所有的维护和加载都在数据库上 我也不认为使用一个触发器来监听/通知节点服务器也是一个好主意,因为随着事情的发展,这个解决方案会变得很麻烦 潜在的解决方案是使用芹菜和rabbitMQ之类的任务队列或其他

我当前的体系结构有多个web应用程序和一个存储点—我的postgres数据库。现在,我想在数据库中发生某些事情时实现一些任务,例如在新用户创建时发送电子邮件,如果某些值已更改,则通知管理员,等等

因此,天真的方法是创建成吨的触发器,这些触发器对于每个操作都是特定的。现在,我认为这不是一个好主意,因为所有的维护和加载都在数据库上

我也不认为使用一个触发器来监听/通知节点服务器也是一个好主意,因为随着事情的发展,这个解决方案会变得很麻烦

潜在的解决方案是使用芹菜和rabbitMQ之类的任务队列或其他解决方案,并以某种方式从数据库触发器启动任务。它可以扩展,并且在将来相对容易管理

我的问题是:将postgresql触发器与芹菜这样的任务队列集成的合适方法是什么(我接受其他建议)。我只是不知道我的想法是否恰当


感谢您的帮助。

最好的解决方案是使用一个单独的进程,该进程可以接收进程间通知或HTTP通知,指示数据库中何时可能有数据需要处理

它将在进程启动时处理所有计划的内容,然后在可能有数据时侦听传入的通知

此外,您还可以添加偶尔的投票,比如每分钟一次

您应该远离触发器,它们需要一个额外的连接,需要在它中断时对其本身进行监控,这反过来会使解决方案复杂化