rabbitMQ(二)六大应用模式

一,简单模式

生产者不经过交换机的路由,直接把消息放到队列里边去,消费者则监听消息队列,如果有消息,则直接消费掉,然后队列里的消息就会被自动删除。

注:这个模式有个问题,就是如果在消费者消费消息的时候出现问题了,那么这个时候消息已经被自动删除掉了,这就会造成消息的丢失。具体的解决方法,留到之后再介绍。

二, work工作模式(资源的竞争)

生产者把消息放入队列里,多个消费者同时监听着这个队列。如果队列里有消息,则多个消费者同时争夺消息,谁抢到那么就谁去处理这个消息。

注:在高并发的坏境下,可能会造成一条消息被重复消费。具体的解决方法,之后再做介绍。

三,发布订阅(共享资源)

x代表交换机,生产者把消息发送给交换机,然后交换机再把消息传递给与他绑定的队列,然后消费者根据自己的需求从队列里取出自己想要的消息。(也可以理解为交换机发布订阅,把消息发送到所有消息队列中,对应消息队列的消费者拿到消息进行消费)

四,路由模式

生产者把消息发送交换机,交换机则根据消息的路由键(一个字符串)来转发到与路由键相同的队列上,然后各自的消费者再从自己对应的队列里取出消息来消费。

 

五,主题模式(路由模式的一种)

与第四种方式类似,不过匹配的方式不再是路由键相同(字符串相同),而是一种类似与正则表达式的匹配。

注:路由键必须由 . 拼接多个单词组成,* 号代表一个单词,#号代表零个或多个单词

六,远程过程调用RPC

一个回调队列。客户端想客户端发起一次请求,同时发送一个回调队列地址reply_to,服务器端处理请求后,将其处理结果保存在一个存储体中。而客户端为了获得处理结果,就需要使用到这个回调队列地址。客户端的请求和回调队列地址都带着一个相同的correlation_id,把请求与它的返回结果关联起来。

具体流程分析:

  • 当客户端启动的时候,它创建一个匿名独享的回调队列。
  • 在 RPC 请求中,客户端发送带有两个属性的消息:一个是设置回调队列的 reply_to 属性,另一个是设置唯一值的 correlation_id 属性。
  • 将请求发送到一个 rpc_queue 队列中。
  • 服务器等待请求发送到这个队列中来。当请求出现的时候,它执行他的工作并且将带有执行结果的消息发送给 reply_to 字段指定的队列。
  • 客户端等待回调队列里的数据。当有消息出现的时候,它会检查 correlation_id 属性。如果此属性的值与请求匹配,将它返回给应用

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值