> 文档中心 > 浅谈消息队列

浅谈消息队列

我们要理解消息队列的作用,首先举一个简单的例子,当我们的从浏览器发送一个请求到业务系统的时候,这个时候业务系统可以很轻易的解决,但是在我们实际的生活中,每条要处理成千上万,甚至上亿的消息处理时,这个时候业务系统的压力是不是很大。所以我们利用消息队列作为中间件,业务系统可以分为多个子业系统。这时候我们再发送请求时,会从业务系统发送到消息队列mq,再由消息队列发送到特定的子业务系统进行处理,这个时候我们的服务器压力是不是减少了许多。

明白几个词

消息的发送者:消息的生产者

消息的接收者: 消息的消费者

消息分为:同步消息;异步消息

同步消息:举一个简单的例子当a给b发送消息,a必须等回复确认接受消息,a才可以进行下一步的操作;这就是同步消息

异步消息:这个就比较容易理解了,比如你给一个人发送微信消息,你需要等他的回复才能进行下一步的操作吗?不用吧!异步消息就是不用收到回复。直接发送过去就可以了。

我的解释比较通俗吧!

我们主要介绍一下异步消息

在当今的企业级应用中广泛使用三种异步消息传递技术

!JMS

! AMQP

! MQTT

JMS:它是一个规范,相当于JDBC规范一样,而提供了与消息服务相关的API接口

JMS消息模型:

>peer-2-peer:点对点模型,消息发布到一个队列中保存信息,队列的消息只能被一个消费者消费或者超时

>publish-subscribe 发布订阅模型

消息可以被多个消费者消费,生产者和消费者相互独立,不需要感知对方的存在

JMS消息种类

        !TextMessage

        ! MapMessage

        ! BytesMessage

        ! StreamMessage

        ! ObjectMessage

        ! Message(只有消息头和属性)

JMS实现:ActiveMQ Redis RabbitMQ RockectMQ(没有完全的遵守JMS规范)

AMQP

AMQP的出现对于我们是一件好事,它是一种协议(高级消息队列协议,也是消息代理规范),规范了网络交换的数据格式兼容JMS

优点:具有跨平台性,同时服务器的供应商,生产者,消费者,可以使用不同的语言来实现,因为不管你用什么语言实现,最后的发送和接受都使用byte字节

AMQP的消息模型

 !direct exchange

 !  fonout exchange

!   topic   exchange

!   headers  exchange

! system exchange

AMQP的消息种类:

!  byte[]

 AMQP的实现: RabbitMQ StormMQ RocketMQ 

MOTT(消息队列遥测传输)

专为小设备设计,是物联网(IOT)生态系统中主要的成分之一

我们一般不做过多的研究,它一般是针对于小设备。

这篇文章仅仅是对消息队列以及它的消息传递技术进行基本的了解。这也是我个人在学习中中对消息队列的个人理解。

对于以上的JMS,AMQP的实现在我以后的文章中会结合spring boot进行讲解。感兴趣的小伙伴可以关注我一下

杭州女装网