消息模型转换概览
当采用消息队列与媒体服务进行对接时,集成系统与媒体服务之间的数据模型通常存在较大的差异,因此也面临这些消息与集成系统的数据模型之间的适配问题。
而消息模型的适配问题,主要存在于指令、指令应答这两个模型中(其他消息,一般在集成系统中并没有对应的概念,因此也不存在适配问题),针对这两个模型,
媒体服务从 4.0 开始,针对term-cmd
和 cmd-state-chg
两个队列,提供基于JSON数据格式 和 JavaScript 脚本的消息转换机制,为集成企业的消息适配提供便利。
如果企业应用本身已在使用消息队列,并且消息数据使用的也是 JSON 格式,则可以利用本文所述的消息模型转换机制来进行消息转换。如果这个条件不满足,
则需要企业应用另行开发消息模型的转换了。
其基本工作原理是:
- 媒体服务加载执行消息转换的 JavaScript 脚本文件,脚本文件中导出了约定的
convertTermCmd
和getAckInfo
两个函数 - 当媒体服务要下发指令时,会将
TermCmd
消息模型转成字符串,并为参数 调用convertTermCmd
函数,然后从convertTermCmd
得到转换后的企业应用自身格式的消息,再将消息term-cmd
队列投递指令消息 - 当指令应答时,企业应用将自已格式的消息投递到
cmd-state-chg
,媒体服务收到消息后,会将消息转换成字符串,并作为参数调用getAckInfo
函数,然后从getAckInfo
得到转换后的AckInfo
,AckInfo
包含了媒体服务需要的应答的相关信息
要启用指令、指令应答的消息模型转换
- 编写 一个JavaScript 的消息转换脚本文件(module),放置到 服务程序的
config/script
目录下,文件名应使用只由字母数字组成的文件名,以.mjs
为文件扩展名,如e-eye.mjs
,文件名(e-eye
)在配置文件要引用到。