RabbitMQ笔记

1、 简单队列模式simple:最简单的工作队列,其中一个消息生产者,一个消息消费者,一个队列。也称为点对点模式。一条消息只能一个消费者消费。

2、 工作队列work:一个消息生产者,一个交换器,一个消息队列,多个消费者。同样也称为点对点模式。一条消息只能一个消费者消费。

3、 发布订阅publish/subscribe:无选择接收消息,一个消息生产者,一个交换器,多个消息队列,多个消费者。可以将消息发送给不同类型的消费者。做到发布一次,多个消费者来消费

4、 路由模式routing跟发布订阅模式类似,然后在订阅模式的基础上加上了类型,订阅模式是分发到所有绑定到交换机的队列,路由模式只分发到绑定在交换机上面指定路由键的队列

5、 主题模式:同样是在发布/订阅模式的基础上,根据主题匹配进行筛选是否接收消息,比第四类更灵活。

topics 主题模式跟 routing 路由模式类似,只不过路由模式是指定固定的路由键 routingKey,而主题模式是可以模糊匹配路由键 routingKey,类似于SQL中 = 和 like 的关系。

*代表一个单词

#代表一个或多个单词

6、 RPC模式:与上面其他5种所不同之处,类模式是拥有请求/回复的。也就是有响应的,上面5种都没有。用的比较少

7、 消息确认机制

生产者端:

7.1、事务方式实现保证消息正确发送出去,使用channel.TxSelect()来开启事务,最后channel.TxCommit()提交事务,这个只是在业务端确认发送出去了

7.2、普通confirm,这个是服务端确认接收是否成功,只返回true或者false

7.3、异步回调方式确认Ack(必须是路由模式才可以),可以返回具体的失败原因。

        消费者端:

    有自动签收、手动签收(建议)

8、 数据持久化,必须交换机、信道、队列都开启持久化

9、 消息优先级必须在消息队列有堆积时才起作用。

10、死信队列:一些因为过期、或者迟迟不被消费的消息重新进入死信队列。为正常的交换机、信道、队列绑定死信交换机、信道、队列

11、备份交换机、备份队列:给正常的交换机绑定一个备份交换机,那么没有发送成功的消息会进入备份队列。消费端可以先从正常队列取数据,取不到再去备份队列取。

12、延迟队列:不想马上被消费的消息进入延迟队列。

延时队列经常被用来处理订单超时取消问题。老版本的rabbitmq要指定两个交换机,消息发送时指定过期时间,因为第一个交换机不绑定队列消费,过期后转到第二个交换机。新版本有延时队列的插件,创建交换机时指定x-delayed-message

 

13、集群分为:普通集群(写消息时只写入某个节点,这个节点挂了后会丢数据)、镜像集群(每个节点有相同数据,但无法做到负载均衡)、高可用集群(HAProxy:负载均衡+keepalive:多个HAProxy热备切换)

14、一般生产者发送消息时,会在消息上带一个id,消费者根据这个id通过redis的setnx命令确保不会重复消费

posted @ 2022-03-15 20:22  暗,伏!  阅读(36)  评论(0编辑  收藏  举报