gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 12:25:38 25 4
gpt4 key购买 nike

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

因此,天真的方法是创建大量特定于每个操作的触发器。现在,我认为这不是一个好主意,因为数据库需要维护和加载。

我也不认为拥有一个对节点服务器执行 LISTEN/NOTIFY 的触发器也是一个好主意,因为随着规模的扩大,这种解决方案处理起来会变得很麻烦。

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

我的问题是:将 postgresql 触发器与 celery 之类的任务队列集成的合适方法是什么(我对其他建议持开放态度)。就是不知道我这样想的方式对不对。

感谢您的帮助。

最佳答案

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

它将处理进程启动时安排的所有内容,然后在可能有一些数据时监听传入的通知。

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

你应该远离触发器,它们需要一个额外的连接,它本身需要被监控以防它中断,这反过来会使解决方案变得相当复杂。

关于postgresql - 如何正确使用 Postgres 触发器中的任务队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39541707/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com