Rabbitmq工作模式
2022-07-15 07:40:02 1 举报
rabbitmq整体工作模式
作者其他创作
大纲/内容
exchangetype=directname=\"exchange.dlx\"
normal.queue
一对多的消息模式,生产者往同一个消息队列里生产,供多个消费者消费,一条消息只能被一个消费者消费;默认情况多个消费者轮询分发,可调整成公平分发(消费者指定channel.basicQos(1))
Rabbitmq实现延迟消费方式二
dead.letter.delay_60s.routingKey
delay.queue.b
RabbitMQ的工作模型相关概念:Connection(连接)、Channel(信道)、Exchange(交换机)、Queue(队列)、Virtual host(虚拟主机)
消费者B
死信队列A
dead.letter.delay.routingKey
路由模型消息可靠投递流程
否
1、需要申明direct交换机2、队列绑定交换机需要制定一个routingKey3、生产者发送消息时需要制定Exchange和routingKey
dead.letter.queue.b
delay.queue.a
dead.letter.delay_10s.routingKey
Consumer
dead.letter.exchange
Producer
routeKey=ORDER
插件保证延迟消费,原理:收到消息后并未立即把消息投递到目标队列而是存储在一个mnesia(分布式数据库)中,随后检测消息延迟时间,到达可投递时间,将其通过x-delayed-type类型标记的交换机投递到目标队列
routeKey=ORDER.*
Broker
exchangetype=direct
Connection(连接)
生产者A
死信交换机
Arguments:x=1y=1match:all
Topic主题模式
delay.queue
延迟队列A
delay.queue.routingKey
2、exchange找到匹配队列
routeKey=GOODS
x-delay-message
msg
问题点:队列是具有先进先出的特性,假如60s的先进去,10s的后进去,那么10s的到时间后不会先出来,要等60s出来后10s的才能出来,这样就会出问题,所以不是特别好的方式,如果后入队列的时间都比前面的时间大,可以采用这种方式,一般不采用这种,直接是采用插件方式
延迟交换机
消费者A
Connection
是否消费成功?
backup.dlx
延迟队列B
3、消息无法路由
exchangetype=fanout
一对一的消息模式,生产者往同一个队列里生产,只供一个消费者
dead.letter.queue.a
delay.queue.b.routing.Key
Exchange
publish/subscribe发布订阅(共享资源)
Simple 模式
1、需要申明headers交换机2、队列绑定交换机3、发送消息
1、发送消息
1、需要申明fanout交换机2、队列绑定交换机3、发送消息PS:多个队列收到的消息相同
exchangetype=directname=\"exchange.normal\"
delay.queue.a.routingKey
delay.exchange
是
hello
生产者B
backup.queue
结束
Routing 路由模式
Queue队列
exchangetype=topic
Headers模式
Virtual Host(虚拟主机)
dead.letter.queue
Arguments:y=1z=1match:any
Work 模式(资源的竞争)
Rabbitmq实现延迟消费方式一
Rabbitmq实现延迟消费方式三
exchangetype=fanoutname=\"exchange.backup\"
x-dead-letter-exchange=exchange.dlxx-dead-letter-routing-key=routeKey
绑定
routeKey=#.GOODS
exchangetype=headers
收藏
0 条评论
回复 删除
下一页