RabbitMq 知识点学习

2021-11-08  本文已影响0人  Equals__

一 五种工作模式

  1. 最简单的传递消息

    producers --》 queue --》 consumer

image.png
  1. 工作队列模式

    producers --》 多个queue --》 consumer


    image.png
  1. 发布/订阅模式

    producers --》exchange --》 多个queue --》 consumer


    image.png
  1. 路由

    producers --》exchange --》路由键--》 多个queue --》 consumer

    image.png
  1. 主题模式(带通配符的理由)

    producers --》exchange --》(带正则符号)路由键--》 多个queue --》 consumer

    号表示一个或者多个字符

    *号表示一个单词

    image.png

二 高级特性

1 消息可靠性投递 (针对生产者)

image.png

2. 消费者ACK

image.png

一般采用手动签收的方式,灵活处理

image.png

3. 消费端限流

削峰填谷。 A系统无法承载请求量时,引入mq,做分批拉取。

需要在配置文件设置消息手动拉取,单个请求中消息个数的数量

#设置消费端手动 ack
spring.rabbitmq.listener.simple.acknowledge-mode=manual
#在单个请求中处理的消息个数,他应该大于等于事务数量(unack的最大数量)
spring.rabbitmq.listener.simple.prefetch=2
image.png

4. TTL

设置消息的存活时间, 比如设置订单有效时间为30分钟, 支付系统还没拿到则取消该订单。

参数名: x-message-ttl , 单位为 毫秒

注意:

通过两种方式设置过期时间。

1.5 死信队列

东西抛弃到垃圾桶,被别人回收。

image.png
image.png

1.6 延迟队列(对于rabbit Mq 非常特殊)

对于订单30分钟问题。

但是rabbit MQ里面没有直接提供延迟队列的功能,需要组合实现。

image.png image.png

三 应用问题

3.1 消息可靠性问题

image.png

3.2 消息幂等性问题

image.png
上一篇 下一篇

猜你喜欢

热点阅读