RabbitMQ 工作模式总结
RabbitMQ 的六种工作模式总结
1 HelloWorld 简单模式
一个生产者,一个消费者,不需要设置交换机(内置有默认的交换机),消息和队列是一对一对的关系,一条消息只能被一个队列消费
工作模式:一个生产者,多个消费者,生产者发送多个消息
处理方式:一条消息只会被一个消费者接收,采用轮询的方式将消息平均发送给消费者,消费者在处理晚某一条消息后,才会收到一条消息
2 WorkQueue 工作队列模式
一个生产者,多个消费者(竞争关系),不需要设置交换机(使用模式的交换机) ,消息和队列是一对一的关系,一条消息只能被一个队列消费
应用场景:对于任务过重或者任务较多情况使用工作队列可以提高任务处理速度
工作模式:每个消费者监听自己的想监听的队列,生产者将消息发送给 broker,由交换机将消息转发到绑定此交换机的每个队列,每个绑定交换机的队列都将接收消息。
3 Pub/Sub 发布订阅模式
需要设置交换机类型为 fanout(广播),并且交换机和队列进行绑定,当发送消息到交换机后,交换机会将消息发送到绑定的队列,不用指定 routingKey(空字符串) ,消息和队列是一对多的关系,一条消息可以被多个队列消费
应用场景:用户通知,消息推送,短信,邮件等
工作模式
1.每个消费者监听自己的队列,并设置 routingkey。
2.生产者将消息发给交换机,由交换机根据 routingkey 来转发消息到指定队列
4 Routing 路由模式
需要设置交换机的类型为 direct(定向),交换机和队列进行绑定并且指定 routingKey(路由键),当发送消息到交换机后,交换机会根据 routingKey 将消息发送到对应的队列, 消息和队列是一对多的关系,一条消息可以被多个队列消费
使用场景:
比如一个记录日志的功能,针对 error 型的日志记录数据库,日常 info 和 warning 进行写日志文件,那这样我们就可以使用路由模式,创建 exchange【交换机】,类型为 direct:这个类型表示需要明确指定路由 key,为每个对应的日志类型创建队列。绑定交换机,再创建 2 个消费者,1 个绑定 error 队列,1 个绑定 info,warning 队列。进行业务处理
5 Topic 通配符模式
需要设置交换机的类型为 topic(通配符),交换机和队列进行绑定,并且指定通配符方式的 routingKey(使用*或者 #的方式 *代表一个单词,#代表零个或者多个单词),当发送消息到交换机后,交换机会根据 RoutingKey 将消息发送到对应的队列,消息和队列是一对多的关系,一条消息可以被多个队列消费
使用场景:
根据用户的通知设置去通知用户,设置接收 Email 的用户只接收 Email,设置接收 sms 的用户只接收 sms,设置两种通知类型都接收的则两种通知都有效
评论