消息系统



消息系统和流系统

直接调用通常是用于诸如远程过程调用的技术
消息系统有很多,包括
Apache的 ActiveMQ RabbitMQ
Apache的 Kafka pulsar
Redis


场景:

 异步通信 解耦  冗余  缓冲  顺序保证
扩展性 可恢复性 过载保护


协议:

 Advanced Message Queuing Protocol
AMQP 一个提供统一消息服务的应用层标准高级消息队列协议,
是应用层协议的一个开放标准,为面向消息的中间件设计
基于此协议的客户端与消息中间件可传递消息,
并不受客户端/中间件不同产品,不同的开发语言等条件的限制
MQTT协议
MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议
STOMP(Streaming Text Orientated Message Protocol)是流文本定向消息协议,
是一种为MOM(Message Oriented Middleware,面向消息的中间件)设计的简单文本协议。
XMPP(可扩展消息处理现场协议,Extensible Messaging and Presence Protocol)是基于可扩展标记语言(XML)的协议,
多用于即时消息(IM)以及在线现场探测
其他基于TCP/IP自定义的协议
有些特殊框架(如:redis、kafka、zeroMq等)根据自身需要未严格遵循MQ规范,
而是基于TCP\IP自行封装了一套协议,通过网络socket接口进行传输,实现了MQ的功能


开发:

RabbitMQ 服务器是用Erlang语言编写的
ActiveMQ 是一个纯Java程序
充分定义网络协议和消息代理服务的功能语义


消息交换的体系结构:

 存储转发     多个消息发送者, 单个消息接收者
分布式事务 多个消息发送者, 多个消息接收者
发布订阅 多个消息发送者, 多个消息接收者
基于内容的路由 多个消息发送者, 多个消息接收者
文件传输队列 多个消息发送者, 多个消息接收者
点对点连接 单个消息发送者, 单个消息接收者