RabbitMQ(二)进阶

94 阅读1分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第6天,点击查看活动详情

高级特性

死信队列

image-20221006193247665

下面给代码,防止晕,我们再来复习一下消息队列的结构

image-20221006221246234

image-20221006221515906

死信交换机and死信队列

1、过期

image-20221006222139886

image-20221006222256597

代码:

TEST_DLX_QUEUE队列中死掉的消息都会去DLX_QUEUE

image-20221006222534496

image-20221006222613014

2、消费者拒绝

image-20221006223041032

(requeue会再次发送这个消息给对的消费者)(至于怎么找到对的消费者就不知道了)

3、超内存了,先进先出

image-20221006223305651

image-20221006223321149

延迟队列

家里热水器我希望30min之后打开

未支付的订单15min自动关闭

1、可以通过死信队列的机制实现

但是如果第一个消息是30min,第二个消息是10min,先进先出原则的话,就失效了

2、插件:

延迟消息的插件

image-20221007112643410

image-20221007113101936

copy到这里

image-20221007113126395

linux:

image-20221007113255525

代码:

消费者

image-20221007113520138

image-20221007113613734

image-20221007113626169

image-20221007113422582

生产者:

image-20221007113834803

image-20221007113803688

image-20221007114024152

流量控制

服务端通过内存的大小限制

image-20221007114830533

消费端通过限制获取消息的条数

prefetch

image-20221007120208114

spring的集成

这里是基于xml文件的,可以细看下面那个springboot的集成

经典 先导依赖

image-20221007121339862

可以写个xml文件

image-20221007141519713

image-20221007142050680

image-20221007142259967

这里的作用是,比如你要给不同的系统发消息,就发给不同的人

image-20221007142337708

pro:

image-20221007121821279

image-20221007121538967

image-20221007121943939

image-20221007142912228

springboot的集成

image-20221007143107122

举例:

我们来实现这个案例

image-20221007143928874

消费者一共会收到5条消息