非底层操作系统软件、非业务应用软件、不是直接给最终用户使用的,不能直接给客户带来价值的软件统称为中间件。消息中间件关注于数据的发送和接收,利用高效、可靠的异步消息传递机制集成分布式系统。消息队列可用于解决解耦、流量消峰、日志收集、事务最终一致性等问题。
消息协议有AMQP、MQTT、STOMP、XMPP等。其中AMQP协议包含以下信息。
AMQP协议
Exchange(交换器):用来接收消息生产者所发送的消息并将这些消息路由给服务器中的队列
Message(消息):消息服务所处理数据的原子单元。消息可以携带内容,从格式上看,消息包含一个内容头、一组属性和一个内容体。
Publisher(消息生产者):一个向交换器发布消息的客户端
Virtual Host(虚拟主机):它是消息队列以及相关对象的集合,是共享同一个身份验证和加密环境的独立服务器域。每个虚拟主机本质上是一个mini版的消息服务器,拥有自己的队列、交换器、绑定和权限机制。
Broker(消息代理):表示消息队列服务器实体,接受客户端连接,实现AMQP消息队列和路由功能的过程。
Routing Key(路由规则):虚拟机可用它来确定如何路由到一个特定消息。
Queue(消息队列):用来保存消息直接发送给消费者。
Connection(连接):可以理解为客户端和消息队列服务器之间的一个TCP连接。
Channel(信道):信道是一条独立的双向数据流通道,它是建立在真实的TCP连接内的虚拟连接,AMQP命令都是通过信道发出去的,不管发布消息、订阅队列还是接受消息,它们都通过信道完成。
Consumer(消费者):表示一个消息队列中取得消息的客户端应用程序。
Binding(绑定):用于消息队列和交换器之间的关联。一个绑定就是基于路由键将交换器和消息队列连接起来的路由规则,所以可以将交换器理解成一个由绑定构成的路由表。