惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - 聂微东
爱范儿
爱范儿
博客园 - 三生石上(FineUI控件)
Recent Announcements
Recent Announcements
大猫的无限游戏
大猫的无限游戏
MongoDB | Blog
MongoDB | Blog
A
About on SuperTechFans
M
MIT News - Artificial intelligence
V
Visual Studio Blog
云风的 BLOG
云风的 BLOG
The GitHub Blog
The GitHub Blog
Jina AI
Jina AI
P
Proofpoint News Feed
博客园_首页
酷 壳 – CoolShell
酷 壳 – CoolShell
T
The Blog of Author Tim Ferriss
G
Google Developers Blog
宝玉的分享
宝玉的分享
Engineering at Meta
Engineering at Meta
Last Week in AI
Last Week in AI
aimingoo的专栏
aimingoo的专栏
罗磊的独立博客
N
Netflix TechBlog - Medium
人人都是产品经理
人人都是产品经理

博客园 - 文刀无尽

在Django 中更新mongodb的ListField字段 图片加到json中,提交到服务器端处理异常问题。 在django中使用时django-nonrel,'django.contrib.auth'不能用的问题 在mac 上安装 mpkg 在bluehost上安装mongodb Celery使用数据库代替rabbitmq 在bluehost上安装pytoh 2.7.2 为android 启动的时候添加splash 折腾了半天,ajax 在模拟器下正常,在一台2.1机器上正常,在我的小米2.3下不工作 去掉默认标题栏且将应用设置为全屏 java 基本语法 在jquery mobile中页面跳转的时候,实现登录检查 去掉jquery mobile 的阴影效果 Eclipse 的 javascript 插件 iphone phonegap中跨域的问题 使用jquery mobile 经验 另类随机读大表数据 (原创)自已实现服务器控件之 TextBox 控件 (原创)自已实现服务器控件系列 之 设计时可用鼠标拖动大小的Label控件
为什么要使用Rabbitmq
文刀无尽 · 2012-03-06 · via 博客园 - 文刀无尽

It all depends on what you want to use it for.

RabbitMQ is the recommended solution, it is widely deployed, tested and supports all features. With optimized configuration you can process up to 15000 persistent tasks/s with a single process. RabbitMQ also comes with management and monitoring solutions (full disclosure: I work with the RabbitMQ team at VMware, and I'm the Celery project lead).

Redis is also a popular option, it supports almost all features, but it is not very durable in its default configuration, if the Redis server is abruptly terminated you may at worst lose minutes of data (http://redis.io/topics/persistence). Even with append-only mode there is a chance of data loss if the celeryd instance is abruptly killed: this is because Redis does not support message acknowledgements. We are working on a patch to emulate this, but that will impact performance quite a lot (in the mean-time you should set CELERYD_PREFETCH_MULTIPLIER=1 to minimize the impact of such a data loss scenario).

The database backends were originally made for testing purposes only, but they are used in production nonetheless. The database backends also does not support events and broadcast, so the Celery monitor and remote control commands (celeryctl) will not work. It may work well enough for small deployments, but if you ever have the need to add more celeryd instances you should pick another option. Sadly, databases are not usually suited for this kind of work (though postgres 9 comes with new features that makes it "more suitable", that we may eventually support).

MongoDB I have not had much experience with myself, but I know the Celery backend is being used and is actively maintained (it just recently gained support for monitoring and remote control support). I imagine, though, that it has the same durability problems as mention above with Redis.

In addition there is support for using Amazon SQS, Beanstalk, CouchDB. These backends do not support monitoring and remote control commands.

In short; If not losing tasks is crucial, you should be using RabbitMQ. The database backend is OK with low task volumes and one or maybe two celeryd instances.