-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
concept
- Exchange:
- 如果不指定 Exchange 的话, RabbitMQ 默认使用[AMQP default],
需要将 routing key 等于 queue name 相同
- 如果不指定 Exchange 的话, RabbitMQ 默认使用[AMQP default],
- name/type:
- fanout[效率最好, 不需要 routing key, routing key 如何设置都可以]
- direct
- topic[#一个或多个, *一个]
- headers
- Auto Delete:
- 当最后一个 Binding 到 Exchange 的 Queue 删除之后, 自动删除该 Exchange
- Binding:
- Exchange 和 Queue 之间的连接关系,Exchange 之间也可以 Binding
- Queue:
- 实际物理上存储消息的
- Durability: 是否持久化
- Durable: 是, 即使服务器重启, 这个队列也不会消失
- Transient: 否
- Exclusive:
- 这个 queue 只能由一个 exchange 监听
restricted to this connection,使用场景: 顺序消费
- 这个 queue 只能由一个 exchange 监听
- Message:
- properties[有消息优先级、延迟等特性]
- Body[Payload 消息内容]组成
- 还有 content_type
- content_encoding
- priority
- correlation_id
- reply_to
- expiration
- message_id 等属性
- ack
- autoACK
- 手动签收
work flow
消息
- 安全可靠的投递
- 丢失:
消息落库, confim 对消息状态进行变更+消息的延迟投递, 做二次确认, 回调检查 - 重复:
唯一 ID+指纹码+Redis 的原子性实现
- 丢失:
- 消息堆积
消费
- 延时消费
- 顺序消费
- 异步投送
- 保证消息不被重复消费[幂等性]
