序
今天在做MQTT相关的业务,突然产生
消息中间件与MQTT有什么区别?
的想法,感觉有区别要是按照逻辑来理,理又理不出什么所以然,所以就查阅了资料做了下面的总结与思考。
思考
消息队列
kafka、rabbitmq、rockmq消息队列一般是为了解决服务异步、解耦、削峰这个领域的问题,在实现消息通讯发布订阅基础业务下做了解决某个问题的特定业务。都实现了AMQP协议即(高级消息队列协议该协议)。该协议被设计为一个开放标准,用来解决各种消息队列的需求和时间拓扑问题。由于其开放的原则,任何人都能以AMQP的标准来实施自己的产品设计。也就是说只要大家都遵守这一标准,任何发布者和消费者都能动态相互建立联系,只要消费者感兴趣。
消息中间件
用来管理消息队列或者消息的服务,或者专门将消息与业务解耦的服务是一个比较宏观的概念,实现AMQP协议、MQTT协议或自定义协议的服务均可称为消息中间件。亦或MQTT协议或自定义协议的服务可理解为为了特定交互通讯业务而做的自定义消息中间件。
消息代理
消息代理(Message Broker)这个概念应该是一种消息中间件实现时的业务架构理念
。消息代理是一种架构模式,用于消息验证、变换、路由。虽然不同的消息中间件架构和实现各不相同,但是大部分都实现了Broker:其实就是消息中间件服务器,它是中间件的核心。注意:RabbitMQ、Kafka、RocketMQ等都有消息代理,但是注意,不是所有中间件都这么选,例如ZeroMQ,它用了套接字风格的API。
MQTT
MQTT是消息队列遥测传输协议,协议定义了基于发布订阅模式硬件性能低下的远程设备以及网络状况糟糕的情况下而设计的发布/订阅型消息协议。MQTT是一种低消耗、低带宽、即时通讯、稳定、开放、轻量级易于实现的消息协议,在物联网的应用下的信息采集,工业控制,智能家居等方面具有广泛的适用性。