文章目录
- 第四十章 开发Productions - ObjectScript Productions - 定义企业消息库
- 概述
- 定义 `Message Bank`服务器
- 添加`Message Bank Helper`类
- 关于`Message Bank`的注意事项
第四十章 开发Productions - ObjectScript Productions - 定义企业消息库
概述
Enterprise Message Bank
是一个可选的远程归档工具,可以在其中收集来自多个客户端产品的消息、事件日志项和搜索表条目。它由以下组件组成:
Message Bank
服务器,这是一个简单的production
,仅由Message Bank
服务组成,该服务接收来自任意数量的客户端产品的提交。- 添加到
production
中并使用消息库服务器地址配置的客户端操作(消息库操作)。
下面显示了一个概念示例:
为了方便查看消息库中的消息,提供了以下附加选项:
- 对于
Message Bank
实例,Management Portal
会自动包含Enterprise Monitor
页面,可以在其中监控客户端生产状态、浏览Message Bank
以及搜索来自受监控客户端的消息。 - 对于每个客户端实例,您都可以在
Message Bank
实例中配置一个指向Enterprise Monitor
的链接。
下面显示了一个例子:
定义 Message Bank
服务器
要定义 Message Bank
服务器,请在服务器计算机上的启用互操作性的命名空间中执行以下操作:
- 在抽象类中创建
Ens.Enterprise.MsgBank.Production
的子类。 - 将其
ProductionDefinition XData
块复制到您的类中。 - 编译你的新类。
下面显示了一个例子:
Class MyMessageBank Extends Ens.Enterprise.MsgBank.Production
{XData ProductionDefinition
{
<Production Name="Ens.Enterprise.MsgBank.Production" TestingEnabled="false" LogGeneralTraceEvents="false"><Description>Production for receiving and collating message bank submissions from one or more clientinteroperability-enabled namespaces and for maintaining a local repository of production status information about eachclient namespace, for display on the Enterprise Monitor page. Open the Monitor page on the samemachine that that is hosting this Production.</Description><ActorPoolSize>0</ActorPoolSize><Setting Target="Production" Name="ShutdownTimeout">120</Setting><Setting Target="Production" Name="UpdateTimeout">10</Setting><Item Name="MonitorService" Category="" ClassName="Ens.Enterprise.MonitorService" PoolSize="1"Enabled="true" Foreground="false" InactivityTimeout="0" Comment="Populates global^IRIS.Temp.Ens.EntMonitorStatus by polling namespaces from Systems List every CallInterval seconds"LogTraceEvents="false" Schedule=""><Setting Target="Host" Name="AlertGracePeriod">0</Setting><Setting Target="Host" Name="AlertOnError">0</Setting><Setting Target="Host" Name="ArchiveIO">0</Setting><Setting Target="Adapter" Name="CallInterval">10</Setting></Item><Item Name="MsgBankService" Category="" ClassName="Ens.Enterprise.MsgBank.TCPService" PoolSize="100"Enabled="true" Foreground="false" InactivityTimeout="20" Comment="" LogTraceEvents="true" Schedule=""><Setting Target="Host" Name="AlertGracePeriod">0</Setting><Setting Target="Host" Name="AlertOnError">0</Setting><Setting Target="Host" Name="ArchiveIO">0</Setting><Setting Target="Adapter" Name="Endian">Big</Setting><Setting Target="Adapter" Name="UseFileStream">0</Setting><Setting Target="Adapter" Name="JobPerConnection">1</Setting><Setting Target="Adapter" Name="AllowedIPAddresses"></Setting><Setting Target="Adapter" Name="QSize">100</Setting><Setting Target="Adapter" Name="CallInterval">5</Setting><Setting Target="Adapter" Name="Port">9192</Setting><Setting Target="Adapter" Name="StayConnected">-1</Setting><Setting Target="Adapter" Name="ReadTimeout">10</Setting><Setting Target="Adapter" Name="SSLConfig"></Setting></Item>
</Production>
}}
该production具有以下服务:
Ens.Enterprise.MsgBank.TCPService
— 接受来自客户端产品的入站数据。有关配置此服务的详细信息,请参阅配置产品中的在服务器上配置消息银行服务。Ens.Enterprise.MonitorService
— 从客户端产品中收集状态信息。
此产品接收此数据并维护本地存储库。
出于测试目的,可以将 Message Bank
产品放在与常规产品相同的机器和实例上,但它必须位于与计划监控的任何产品不同的命名空间中。
添加Message Bank Helper
类
默认情况下,邮件正文未编入索引且无法搜索。可以添加一个辅助类来实现消息库中的搜索功能。为此:
- 在创建
Ens.Enterprise.MsgBank.BankHelperClass
的子类并实现其OnBankMsg()
方法。
OnBankMsg()
方法指定在入站消息包含消息正文时要执行的任何自定义处理。
在此方法的实现中,应该决定是否处理进程中的消息(并可能减少输入容量),或者该方法是否应该将消息异步转发到辅助进程以更有效地平衡工作。
- 在
Message Bank
制作中,选择Ens.Enterprise.MsgBank.TCPService
业务服务并指定Bank Helper Class
设置。对于该值,请使用helper
类的名称。
关于Message Bank
的注意事项
请注意 Message Bank
的以下重要特征:
Message Bank
与贡献产品的消息体类没有同步依赖关系;因此,它接收每条消息的序列化形式。对于虚拟文档消息体,它将序列化的文档重新解析为一个对象,并接收和存储来自贡献产品的搜索表条目。
要在消息库中启用自定义模式属性搜索,请确保将自定义模式定义放置在消息库生产命名空间中。
- 为了唯一性,消息银行产品将客户端产品的数字标识符添加到消息
ID
之前。 Message Bank
页面还用作查看多个客户端产品状态和调用它们的重新发送服务的门户。为了使这些额外的功能发挥作用,消息库需要知道客户作品的网址。有关详细信息,请参阅配置产品中的配置企业消息库。- 消息库机制不会从原始产品中删除消息;应该使用单独的清除过程来处理该功能。
- 可以将来自消息库的消息重播回原始
production
或其他客户端production
。请参阅监控制作中的使用企业消息库。