rabbitmq的简单介绍
一个消息队列,可以持久化到磁盘,消息存储在内存中
生产者推送消息到队列中,消费者从队列中拿出一条消息进行消费
先进先出
消息丢失
消息丢失
amqp协议支持的事务模式
- 和关系型数据库的事务类似,支持交易模式开起,提交事务,回滚的方式
- 事务提交非常慢,会严重降低系统吞吐量
- 和关系型数据库的事务类似,支持交易模式开起,提交事务,回滚的方式
确认模式
- 异步的方式
- 消费后发起回调告诉rq,然后rq才从内存中删除该消息
- 如果丢失,消息会回到队列中
- 分为自动确认模式和手动确认
- 自动确认更快捷,但不安全,如果在成功发送之前,消费者的TCP连接或通道关闭,服务器发送的消息将丢失。在使用自动确认模式时,需要考虑的另一件事是消费者过载
手动确认模式可以使用 prefetch,限制通道上未完成的(“正在进行中的”)发送的数量。然而,在自动确认的情况下,没有这样的限制
如果忘记确认,会导致内存爆满
autoack为False,消息会分成两个部门,一部分是代分配的任务,一部分是没有确认的消息