面向消息的通信
一.面向消息的瞬时通信/持久通信
面向消息的通信一般由消息队列系统(Message-Queuing System,MQ)或面向消息的中间件(Message-Oriented Middleware,MOM)提供高效可靠的消息传递机制来进行平台无关的数据交流,并可基于数据通信进行分布系统的集成。通过提供消息传递和消息排队模型,可在分布环境下扩展进程间的通信,并支持多种通信协议、语言、应用程序、硬件和软件平台。
通过使用MQ或MOM,通信双方的程序(称其为消息客户程序)可以在不同的时间运行,程序不在网络上直接通话,而是间接地将消息放入MQ或MOM服务器的消息机制中。因为程序间没有直接的联系,所以它们不必同时运行:当消息放入适当的队列时,目标程序不需要正在运行;即使目标程序在运行,也不意味着要立即处理该消息。
消息队列系统为持久异步通信提供多种支持,本质是提供消息的中介存储能力,这样就不需要消息发送方和接收方在消息传输过程中都保持激活状态。
消息队列模型
应用程序可以通过在特定队列中插入消息来进行通信。消息由一系列通信服务器依次进行转发,最终送达目的地。即使在消息发送过程中接收方的机器未处于运行状态,消息也能送到。
消息队列系统的重要特征之一是,通常只能确保发送方发出的消息最终能插入到接收方的队列中,并不保证消息到达的时间,甚至不保证消息一定会得到读取,这完全由接收方来决定。
消息转换器可以像一个消息格式重新编排工具一样简单。比如说,假定输入的小细胞含有数据库中的一张表,其中,记录之间通过特殊的代表记录结束的分隔符来分割,而记录中的字段长度已知且固定。如果目的应用程序希望使用另外的分隔符来分割记录,并且希望字段是可变长度,就需要使用消息转换器来讲消息格式转换为目的应用程序所能够接受的格式。
普通消息队列系统的目标并不仅仅在于为最终用户提供支持,建立这样的系统要解决的重要问题是:要为进程间的持久通信提供支持,无论该进程是在运行用户程序,在处理对数