将数据库与消息队列解耦的最佳实践



我正在构建一个允许用户上传图像的web应用程序。上传图像时,需要将其调整为一个或多个大小,每个大小都需要发送到Amazon s3进行存储。每个大小的图像的元数据和url存储在web服务器上的单个数据库记录中。我使用一个消息队列来异步地执行调整大小和上传(因为每个请求可能会有大图像和多次调整大小)。当调整大小/上传任务完成时,需要使用url更新数据库记录。

我的问题是执行任务的工作人员将无法访问数据库。我正在考虑在任务完成后使用更新数据库记录的适当信息从工作人员发回web应用程序的http回调。有没有其他的选择或理由让我用另一种方式来做这件事?

我使用python/pylons为web后端,mysql为数据库和芹菜/amqp为消息传递。

谢谢!

似乎您的目标不是将数据库与MQ解耦,而是与worker解耦。因此,您可以创建另一个队列来接收完成通知,并使用另一个worker来获取通知并适当地更新数据库。

最新更新