专注Java教育14年 全国咨询/投诉热线:400-8080-105
动力节点LOGO图
始于2009,口口相传的Java黄埔军校
首页 hot资讯 简单说明一下消息中间件的使用场景

简单说明一下消息中间件的使用场景

更新时间:2023-01-13 16:52:52 来源:动力节点 浏览309次

1、work_queue 工作队列模式

例如我们有的时候有发送短信的的服务,同事要发送短信的时候比较多,那么一台服务吃不消,这样的话我们就可以使用这种模式来进行削峰填谷。如下图

消息中间件使用场景

p是生产者 这个端要发送消息的量特别大(加入要发送1000),并且发送消息不影响后边的业务执行,这时候我们就使用mq来削峰。

C1和C2是相同的服务,都为短信服务,他们两个单独的处理能力为五百,这样两个加起来就有一千的量了(mq出来1000的消息量绰绰有余),而且这种模式下C1消费后C2就不会重复消费。

2、pub/sub 发布订阅模式

参照下图:

消息中间件使用场景

在订阅模型中,多了一个Exchange 角色,而且过程略有变化:

  • p:生产者,也就是要发送消息的程序,但是不再发送到队列中,而是发给X(交换机)
  • C:消费者,消息的接收者,会一直等待消息到来
  • Queue:消息队列,接收消息、缓存消息
  • Exchange: 交换机(X)。一方面,接收生产者发送的消息。另一方面,知道如何处理消息,例如递交给某个特别队列、递交给所有队列、或是将消息丢弃。到底如何操作,取决于Exchange的类型。Exchange有常见以下3种类型:
  1. Fanout:广播,将消息交给所有绑定到交换机的队列
  2. Direct:定向,把消息交给符合指定routing key 的队列
  3. Topic:通配符,把消息交给符合routing pattern (路由模式) 的队列

Exchange(交换机)只负责发消息,不具备存储消息的能力,因此如果没有任何队列与 Exchange 绑定,或者没有符合路由规则的队列,那么消息会丢失!

3、routing模式 路由模式

队列与交换机的绑定,不能是任意绑定了,而是要指定一个 RoutingKey (路由key)

消息的发送方在向Exchange发送消息时,也必须指定消息的RoutingKey

Exchange不再把消息交给每一个绑定的队列,而是根据消息的 Routing Key 进行判断,只有队列的Routingkey 与消息的 Routing key 完全一致,才会接收到消息。

消息中间件使用场景

注意:routing模式下 交换机绑定队列时要指定routing key,消息被发送时会转发到对应的队列中 ,还有交换机的类型要是direct

使用场景:下单后要对这个库存进行修改,这时候可以为库存系统专门设置一个队列,然后设置一个key,注意这时候必须是下单成功。(看不明白就别较劲了,场景是我自己想的)

4、topics通配符模式

消息中间件使用场景

注意:其实当前模式可以实现发布订阅模式,假设所有队列绑定的都是*,那匹配时就类似于pub/sub模式了,实现routing模式,就是通配符写的不那么复杂就行,只是这种方式在设置routing key的时候更加的灵活

使用场景:上述的皆可用(本人没有太多实战经验,键盘那选手,只是做下记录)

amqp是什么?高级消息 队列协议

AMQP,即Advanced Message Queuing Protocol,一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不同产品,不同的开发语言等条件的限制。

以上就是动力节点小编介绍的"简单说明一下消息中间件的使用场景",希望对大家有帮助,如有疑问,请在线咨询,有专业老师随时为您务。

提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>