RabbitMQ消息类型

作者: 蓝梅 | 来源:发表于2021-08-08 22:30 被阅读0次

一、RabbitMq名词

1.queue队列

最最最核心的队列,用于存储消息

2.exchange

交换机,用来接收消息,发送到队列

3.routing key

路由,生产者发送消息到交换机,一般会指定路由key,用来指定发送到绑定的哪个队列

4.virtual

虚拟机,类似于不同的数据库

二、消息类型

消息类型

总共6种,RPC类型一般不用

1.Hello World

生产者直接发送消息到队列,消费者直接从队列获取消息
发送消息时,只需要指定队列,不需要指定交换机,以及路由key,只有一个消费者

2.Work queues

发送消息时,只需要指定队列,不需要指定交换机,以及路由key,设定多个消费者

3.Publish/subscribe

广播模型交换机,发送消息时,需要新建Fanout交换机,队列,交换机和队列绑定时,不需要路由key,所以队列都能获取到交换机中的消息;消息发送时需要指定交换机,消息接收时需要指定队列,每个消息都会发送到不同的队列,并且每个队列都会被消费一次;

4.Routing

Declare交换机类型,发送消息时,需要新建Declare交换机,队列,交换机和队列绑定时,需要指定routing key;如果不指定,则所有消息都会发送到该队列;消息发送时,需要指定交换机,还有Routing key,每个消息会根据不同的Routing key,发送到不同的队列,消费者绑定不同的队列来获取消息;

5.Topics

Topic交换机类型,发送消息时,需要新建Topic交换机,队列,交换机和队列绑定时,需要指定routing key,routing key指定有个规则(列如 发送 CN.HUNAN.CHANGSHA 指定routing key CN.HUNAN.* 或者 CN.# 队列能接受到消息;*只能代表一个单词,#可以代表多个单词);发送消息时,和Routing模式是一样的,指定交换机以及routing key,发送到不同的队列,消费者绑定不同的队列来获取消息;

三、延时队列

RabbitMQ并不支持延时队列,可以通过它内部得TTL和死信队列来做到延时队列
TTL队列,当消息发送到指定延时队列时,在设置时间内没有被消费,该消息则会被丢弃;
死信队列,当消息被丢弃时(消息被拒绝、消息TTL过期、队列达到最大长度),可以被移入到死信队列
所以延时消息的处理是,当创建TTL队列时,不给当前队列消费者,为TTL队列绑定一个死信交换机,并指定Routing key(该Routing key就为发送到死信交换机时的Routing key),然后为当前交换机绑定队列,并为当前队列绑定消费者;则当消息过期时,就会被发送到死信队列,就会立马被消费,则实现了延时队列;

相关文章

网友评论

    本文标题:RabbitMQ消息类型

    本文链接:https://www.haomeiwen.com/subject/runovltx.html