MQ的消息驱动和消息触发(来自《精通WebSphereMQ》)
我们在构建一个应用系统的时候,往往会将其划分成多个模块,各个模块之间需要约定
接口规范。对于消息驱动的模块之间需要约定的是消息的报文格式、通信模式、功能定义。
报文格式也就是双方模块都能理解的消息语言,比如 XML。对于跨网络、跨平台的消息,
报文格式应该能够屏蔽双方信息编码上的差异 (比如 ASCII 编码或 EBCDIC编码),屏蔽双
方信息表达上的差异 (比如整数的高低字节,浮点数的表示,32 位/64 位的整数长短等等)。
通信模式也就是双方通话的方式,比如是双向的一问一答方式,还是单向的汇报方式,是点
对点方式,还是一对多广播方式。对于跨网络、跨平台的消息,通信模式还应该约定双方的
网络层通信协议和应用层通信协议。 功能定义也就是说模块在收到一条消息后应该做的相应
动作。有了这些约定,模块之间就可以通过消息流转将各个模块的功能发挥出来,形成对外
的业务功能。一旦要增加模块,原有的模块可以不需要改动。一旦要改变业务功能或业务流
程,可能需要改变的只是消息流转的次序和方式。
消息驱动结构的系统中几乎所有的模块都在等待消息,在消息到来后进行相应的处理,
处理结束后又回到这个点等待下一条消息。消息源可以是一个文件,也可以是系统队列、数
据库、网络连接等等,可谓五花八门。监听消息的程序通常被称为监听器 (Listener),如果
每个模块有各自不同的监听器,则在系统空闲的时候,这些模块虽然不在工作,但也一直占
用着系统资源。如果模块共同系统提供的监听器,则在监听器上可以设立触发机制
(Trigger),可消息到达的时候来启动相应的模块进行处理,这样一来,在系统空闲的时候,
只需要开启系统监听器即可,所有的工作模块都可以休息了
下一篇: 数据恢复中需要注意的问题