第四十章 开发Productions - ObjectScript Productions - 定义企业消息库

概述

Enterprise Message Bank 是一个可选的远程归档工具,可以在其中收集来自多个客户端产品的消息、事件日志项和搜索表条目。它由以下组件组成:

  • Message Bank 服务器,这是一个简单的production,仅由 Message Bank 服务组成,该服务接收来自任意数量的客户端产品的提交。
  • 添加到production中并使用消息库服务器地址配置的客户端操作(消息库操作)。

下面显示了一个概念示例:

第四十章 开发Productions - ObjectScript Productions - 定义企业消息库-LMLPHP

为了方便查看消息库中的消息,提供了以下附加选项:

  • 对于 Message Bank 实例,Management Portal 会自动包含 Enterprise Monitor 页面,可以在其中监控客户端生产状态、浏览 Message Bank 以及搜索来自受监控客户端的消息。
  • 对于每个客户端实例,您都可以在 Message Bank 实例中配置一个指向 Enterprise Monitor 的链接。

下面显示了一个例子:

第四十章 开发Productions - ObjectScript Productions - 定义企业消息库-LMLPHP

定义 Message Bank服务器

要定义 Message Bank 服务器,请在服务器计算机上的启用互操作性的命名空间中执行以下操作:

  1. 在抽象类中创建 Ens.Enterprise.MsgBank.Production的子类。
  2. 将其 ProductionDefinition XData 块复制到您的类中。
  3. 编译你的新类。

下面显示了一个例子:

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 client
   interoperability-enabled namespaces and for maintaining a local repository of production status information about each
   client namespace, for display on the Enterprise Monitor page. Open the Monitor page on the same
   machine 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

默认情况下,邮件正文未编入索引且无法搜索。可以添加一个辅助类来实现消息库中的搜索功能。为此:

  1. 在创建 Ens.Enterprise.MsgBank.BankHelperClass 的子类并实现其 OnBankMsg() 方法。

OnBankMsg() 方法指定在入站消息包含消息正文时要执行的任何自定义处理。

在此方法的实现中,应该决定是否处理进程中的消息(并可能减少输入容量),或者该方法是否应该将消息异步转发到辅助进程以更有效地平衡工作。

  1. Message Bank 制作中,选择 Ens.Enterprise.MsgBank.TCPService业务服务并指定 Bank Helper Class 设置。对于该值,请使用helper类的名称。

关于Message Bank的注意事项

请注意 Message Bank 的以下重要特征:

  • Message Bank 与贡献产品的消息体类没有同步依赖关系;因此,它接收每条消息的序列化形式。对于虚拟文档消息体,它将序列化的文档重新解析为一个对象,并接收和存储来自贡献产品的搜索表条目。

要在消息库中启用自定义模式属性搜索,请确保将自定义模式定义放置在消息库生产命名空间中。

  • 为了唯一性,消息银行产品将客户端产品的数字标识符添加到消息 ID 之前。
  • Message Bank 页面还用作查看多个客户端产品状态和调用它们的重新发送服务的门户。为了使这些额外的功能发挥作用,消息库需要知道客户作品的网址。有关详细信息,请参阅配置产品中的配置企业消息库。
  • 消息库机制不会从原始产品中删除消息;应该使用单独的清除过程来处理该功能。
  • 可以将来自消息库的消息重播回原始production或其他客户端production。请参阅监控制作中的使用企业消息库。
06-27 12:43