InterSystems 数据平台互操作功能运行维护管理基础 - 互操作消息管理
InterSystems 数据平台的互操作功能与久经考验的Ensemble和HealthConnect集成引擎产品一脉相承。事实上,使用IRIS的典型客户不但应用了IRIS提供的多模型数据存储、分布式存储等数据存储特性,也广泛地应用如可视化数据转换,可视化数据流程编辑和可视化规则引擎等一系列互操作能力构建异构系统间或组织机构间的数据流程。
那么,在生产环境上,如何监控与评估数据流程的运行状况,在发生问题时如何快速定位并解决故障,就是用户的运维团队需要考虑的问题。
本系列文章将围绕IRIS互操作功能中核心的互操作消息管理,Production管理与优化及互操作告警与通知三个方面介绍互操作功能的运维基础知识和常用技巧,希望能够帮助客户平稳、高效地运用数据平台。
注:本文提到的InterSystems数据平台,包括Caché数据库、Ensemble集成平台、HealthConnect医疗版集成平台和InterSystems IRIS数据平台。
互操作消息管理
消息是互操作功能中各组件间通信的基本方法,在互操作Production业务服务、业务流程和业务操作之间广泛使用。
除承担信息传递的基本功能外,由于常常需要在生产环境中查看消息内容或重发消息以解决问题,消息检索就是大家最常用到的功能,而IRIS特有的结构化消息存储也为开发和运维团队使用和管理消息创造了便利。用户能够通过消息的内容,某项具体属性,来源/目标和发生时间等条件检索和过滤消息,迅速找到自己感兴趣的信息。
我们先回顾下消息的结构与关联的上下文。
消息结构
如图所示,消息分为消息头与消息体两部分。其中消息头(标头)主要用于记录消息发生的来源、趣向、时间和消息类型等上下文信息,而消息体(正文)则为消息的具体内容。
而在消息的上下文中,会话是一个比较重要的概念,它用于表达一次交互过程中,从初始的输入所触发的所有消息。在使用时,需要注意:
-
- Message Trace将显示一个会话的所有信息
- 消息查看器默认只列出会话开始的信息(绿色消息)
消息检索
下图即为平台自带的消息查看器,可通过Ensemble > 查看 > 消息导航访问(Ensemble菜单项在IRIS和HealthConnect产品中的名称为Interoperability,位置,含义均相同,下文中将不再赘述)。
可见其中包含若干预制条件及可灵活扩展的查询条件以应对不同场景的需求。
需要注意的是,对检索所需的消息体或头属性建立索引很重要。因为在生产环境中,production中的消息存量可以轻易达到百万、千万甚至亿级,对于海量数据不经过索引进行检索就性能而言不可行。
应用SQL检索消息
- 如果需要,也可以使用SQL语句进行搜索
- 系统资源管理器SQL执行查询。
- 在运行前切换到正确的命名空间。
- 系统资源管理器SQL执行查询。
- 可以参考消息查看器使用的SQL语句来修改
- 在Terminal中,在执行搜索的命名空间中运行以下代码。
- Set ^Ens.Debug("UtilEnsMessages", "sql")=1
- 在消息查看器中执行搜索
- 在Terminal中,在执行搜索的命名空间中运行以下代码。
- 根据需要从消息查看器复制、修改和执行SQL。
- 需要SQL知识
用户可直接运用平台提供的SQL示例检索消息,这样的SQL也为用户学习和掌握IRIS持久话消息的结构和辅助函数等概念提供了基础。
用户在熟悉消息结构,并了解SQL的条件下,配合Search Table、索引等特性,可以实现更复杂的基于消息内容的查询。
其中,关于Search Table的应用,用户也可参考我们的另一篇文章《互操作消息统一管理系列:SearchTable加速检索》。此处不再赘述。
异常消息的处理
重发消息
借助消息的持久化,当通信异常导致消息传递失败时,用户也可通过重发消息重新触发业务
挂起消息
- 如果业务组件运行错误,可能会挂起消息
- 手动停止消息
- 队列查看页 > 选择业务组件 > 挂起按钮
- 组件配置页 > 作业 > 挂起按钮
- 挂起后消息保持静止,等待手工处理
用户也可有针对性地查看和处理被挂起的消息。
- 查看挂起消息
- Ensemble > 查看 > 已挂起的消息
- 重发已挂起消息
- 从已挂起消息页重发将发送被挂起的这条消息
- 从消息查看器重发将复制并发送一条新的消息
中断消息
IRIS的业务组件有自动重发消息的能力。但但运维团队明确远端故障已发生,短期内重发消息没有意义时,也可下达指令丢弃消息,不再进行后续处理。
- 业务组件处于重试状态时
- 组件配置页 > 作业 > 放弃按钮
- Ensemble > 监视器 > 队列 > 点击业务组件 > 选择活动的消息 > Abort 或 Abort All 按钮
- 中断被堆积的消息
- Ensemble > 监视器 > 队列 > 点击业务组件 > 选择排队的消息 > Abort 或 Abort All 按钮