RabbitMQ的六种工作模式

RabbitMQ的六种工作模式

1.work queues 工作队列

应用场景:对于任务过重或者任务较多情况使用工作队列可以提高任务处理速度

工作模式:一个生产者,多个消费者,生产者发送多个消息

处理方式:一条消息只会被一个消费者接收,采用轮询的方式将消息平均发送给消费者,消费者在处理晚某一条消息后,才会收到一条消息

2.Publish/Subscribe 发布、订阅

应用场景:用户通知,消息推送,短信,邮件等

工作模式:每个消费者监听自己的想监听的队列,生产者将消息发送给broker,由交换机将消息转发到绑定此交换机的每个队列,每个绑定交换机的队列都将接收消息。

[思考]

  • publish/subscribe与work queues有什么区别。区别:

    1)work queues不用定义交换机,而publish/subscribe需要定义交换机。

    2)publish/subscribe的生产方是面向交换机发送消息,work queues的生产方是面向队列发送消息(底层使用默认交换机)。

    3)publish/subscribe需要设置队列和交换机的绑定,work queues不需要设置,实质上work queues会将队列绑定到默认的交换机。

    相同点: 所以两者实现的发布/订阅的效果是一样的,多个消费端监听同一个队列不会重复消费消息。

  • 实质工作用什么 publish/subscribe还是work queues。

    建议使用 publish/subscribe,发布订阅模式比工作队列模式更强大,并且发布订阅模式可以指定自己专用的交换机。

3.Routing 路由模式

应用场景

比如一个记录日志的功能,针对error型的日志记录数据库,日常info和warning进行写日志文件,那这样我们就可以使用路由模式,创建exchange【交换机】,类型为direct:这个类型表示需要明确指定路由key,为每个对应的日志类型创建队列。绑定交换机,再创建2个消费者,1个绑定error队列,1个绑定info,warning队列。进行业务处理

工作模式

1.每个消费者监听自己的队列,并设置routingkey。

2.生产者将消息发给交换机,由交换机根据routingkey来转发消息到指定队列

4.Topics主题模式

应用场景:

根据用户的通知设置去通知用户,设置接收Email的用户只接收Email,设置接收sms的用户只接收sms,设置两种通知类型都接收的则两种通知都有效。

通配符的使用:

  • #是一个可以匹配一个或者多个单词,*是只匹配一个单词

工作模式

  • 每个消费者监听自己的队列,并且设置带统配符的routingley
  • 生产者将消息发给broker,由交换机根据routingkey来转发消息到指定队列

【思考】

1、本案例的需求使用Routing工作模式能否实现?

使用Routing模式也可以实现本案例,共设置三个 routingkey,分别是email、sms、all,email队列绑定email和all,sms队列绑定sms和all,这样就可以实现上边案例的功能,实现过程比topics复杂。

Topic模式更多加强大,它可以实现Routing、publish/subscirbe模式的功能。

5.Header模式

header模式与routing不同的地方在于,header模式取消routingkey,使用header中的key/value(键值对)匹配队列

应用场景:

根据用户的通知设置去通知用户,设置接收Email的用户只接收Email,设置接收sms的用户只接收sms,设置两种通知类型都接收的则两种通知都有效。

6.RPC

RPC即客户端远程调用服务端的方法 ,使用MQ可以实现RPC的异步调用,基于Direct交换机实现,流程如下:

1、客户端即是生产者就是消费者,向RPC请求队列发送RPC调用消息,同时监听RPC响应队列;
2、服务端监听RPC请求队列的消息,收到消息后执行服务端的方法,得到方法返回的结果;
3、服务端将RPC方法 的结果发送到RPC响应队列;
4、客户端(RPC调用方)监听RPC响应队列,接收到RPC调用结果。

总结一下几个模式

1.简单模式,用的默认交换机,1个生产者,1个消费者,一个消息只能被一个消费者消息

2.工作模,多个消费者监听同一个队列,如果任务数据比较多,可以多几个消费者,可以加快消费的速度

3.订阅发布模式,引入了交换机的类型fanout,广播模式 ,每个消费者单独监听自己的对列都可以取消费自己队列的消息。

4.routing,是direct的的交换机类型,指定路由

5.topic,是topic的交换机类型,比路由多了通配符的更加的灵活

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值