Web 消息传递服务利用 WebSphere® Application Server V6.1.x 及更高版本随附的服务集成总线来提供支持 Bayeaux 客户机所必需的底层发布和预订功能。为了确定 Bayeaux 发布程序和预订程序与服务集成总线的交互方式,在部署用于提供 Bayeaux 功能的应用程序时,需要提供某些配置参数。
Bayeaux 预订通道概念相当于服务集成总线中的主题,因此,它能够将事件归入相关的组中,例如 /sports/football 或 /weather。在服务集成总线中,主题存在于生产者和使用者所连接的主题空间目标中。一个主题空间中的主题与存在于另一个主题空间中的主题完全无关,即使它们同名亦如此。因此,Web 消息传递服务配置的一部分使应用程序开发者能够指定 Bayeaux 应用程序所使用的服务集成总线主题空间。
另外,对发布至服务集成总线主题空间的事件(消息)应用了可靠性,此可靠性确定在服务集成总线中处理消息的方式。这包括一些条件,在这些条件下,消息可能会被消息传递基础结构废弃。在某些情况下,如果服务器的资源有限,那么可以接受由于工作负载较高而废弃消息,而在其他情况下,即使存在使服务器过载的风险,也要保留消息。
在配置包括工作负载管理或安全性之类的概念的高级方案时,也需要考虑那些要求对服务集成总线的影响。下面对其中的每个概念都作了更为详细的描述。
在配置 Bayeaux 应用程序与服务集成总线的交互方式时,可以使用下列选项。
要执行 Web 消息传递操作,服务集成总线是必需的。客户机只能通过单一传入 URI 来连接到单一服务集成总线。只有通过创建不同的 Web 消息传递配置定义并指定不同的总线名才能连接到多个总线,但在这种情况下,客户机必须通过不同的 URI 来进行连接,并且必须使用多个连接。使用 Ajax 客户机时,只能在单一 Web 页面上与单一服务器建立一个 Bayeux 连接。不同的页面可以指定不同的 URI 并连接到不同的总线。
名称: | busName |
---|---|
必需或可选: | 必需 |
数据类型: | 字符串 |
受支持的值: | 任何服务集成总线的名称 |
缺省值: | 没有缺省值 |
描述: | 传入 Web 消息传递客户机用于发布或预订操作的服务集成总线。 |
在大多数情况下,Bayeaux 应用程序需要在单一服务集成总线主题空间中生成或使用消息。destination 属性使应用程序开发者能够指定要将哪个主题空间用于所有与服务集成总线进行的交互。
名称: | destination |
---|---|
必需或可选: | 可选 |
数据类型: | 字符串 |
受支持的值: | 任何服务集成总线主题空间的名称 |
缺省值: | Default.Topic.Space |
描述: | 这是服务集成总线中的主题空间,应用程序将使用此主题空间中的消息或者在其中生成消息。 指定的目标可以是实际的主题空间,也可以是主题空间的别名(请参阅别名目标)。通过使用别名,可以使应用程序不依赖于主题空间的实际名称。 使用此属性来指定 Bayeaux 应用程序使用的主题空间时,主题空间中主题的名称是采用 Bayeaux 预订通道名称并除去前导斜杠来确定的,例如,通道名称“/sports/football”将映射至服务集成总线主题“sports/football”。 如果应用程序开发者不知道使用了哪个主题空间,那么可以省略此属性并使用缺省主题空间。 注意,如下面一节中所述,此属性将被 multipleDestinations 属性覆盖。 |
在高级方案中,Bayeaux 应用程序可能需要生成或使用多个服务集成总线主题空间,例如,在显示 portlet 环境中多个互不相同的源中的数据时就需要这样做。在这种情况下,应用程序开发者可以启用 multipleDestinations 属性,它将覆盖 destination 属性,并且允许开发者将必需的主题空间(或别名)目标的名称指定为 Bayeaux 预订通道名称的一部分。
名称: | multipleDestinations |
---|---|
必需或可选: | 可选 |
数据类型: | 布尔值 |
受支持的值: | true 或 false |
缺省值: | false |
描述: | 启用备用 Bayeaux 预订通道语法,它支持将目标服务集成总线主题空间的名称指定为通道名称的一部分。 启用了此属性之后,将导致使用第一个通道段来指定主题空间的名称。例如,要发布至“OlympicResults”主题空间中的“track/relay4x100”主题,应用程序将指定以下 Bayeaux 预订通道: /OlympicResults/track/relay4x100 注意,如果启用了 multipleDestinations,那么将忽略“destination”属性的值。 |
发布至服务集成总线主题空间的事件(消息)已应用了“可靠性”,它们确定在服务集成总线中如何处理消息。这包括一些条件,在这些条件下,消息可能会被消息传递基础结构废弃。在某些情况下,如果服务器的资源有限,那么可以接受由于工作负载较高而废弃消息,而在其他情况下,即使存在使服务器过载的风险,也要保留消息。
名称: | reliability |
---|---|
必需或可选: | 可选 |
数据类型: | 字符串 |
受支持的值: |
|
缺省值: | ExpressNonPersistent |
描述: | 指定将 Bayeaux 发布的事件(消息)发送至服务集成总线时的可靠性级别。 可以在以下消息可靠性级别一节中找到有关这些选项的行为的详细信息。 注意,对于非持续预订,由于预订不再存在,因此在服务器重新启动之后将不会提供消息。这意味着,选择这两种持久可靠性级别时获得的好处有限。在大多数情况下,应使用其中一个非持久值。 |
Bayeux 协议支持客户机发布至服务集成总线。根据要开发的应用程序不同,您不仅仅可以允许消息从服务器流向 Web 消息传递客户机。例如, 您可能更愿意要求客户机通过 Web 应用程序 (Servlet) 来发布,并且对于在将消息发布至服务集成总线之前检查消息内容具有更高的控制权。缺省情况下,客户机不能通过 Bayeux 协议来发布消息。
名称: | clientCanPublish |
---|---|
必需或可选: | 可选 |
数据类型: | 布尔值 |
受支持的值: | true 或 false |
缺省值: | false |
描述: | 指示是否允许 Web 消息传递客户机发布消息。缺省情况下,客户机不能发布消息。您必须将 clientCanPublish 显式地设置为 true 才能支持客户机发布消息。 |
在启用了总线安全性的情况下,传入 Web 消息传递客户机必须经过认证并且获得授权之后才能连接至服务集成总线。有关更多信息,请参阅保护支持 Web 消息传递的应用程序。
名称: | authType |
---|---|
必需或可选: | 可选 |
数据类型: | 字符串 |
受支持的值: |
|
缺省值: | 无 |
描述: | 在启用了总线安全性的情况下,传入 Web 客户机端需要具有身份才能被授权连接至服务集成总线。指定此配置参数以确保在何处获取认证信息以登录至服务集成总线。
如果选择任何选项都未能检索凭证,那么将执行使用空白用户标识和密码来登录至服务集成总线。如果启用了服务集成总线安全性,那么将不能连接 Web 客户机端以执行 Web 消息传递操作。 |
如果 useDurable 配置属性设置为 true,那么会将对服务集成总线的持久预订用于 Bayeux 预订请求。可以使用持久预订在订户处于不活动状态时保留对主题发布的消息。
名称: | useDurable |
---|---|
必需或可选: | 可选 |
数据类型: | 布尔值 |
受支持的值: | true 或 false |
缺省值: | false |
描述: | 如果将持久预订用于 Web 消息传递,那么当 Web 客户机对服务集成总线的预订进入不活动状态时,Web 客户机将能够在短时间内恢复操作,而不会丢失消息。预订可能由于下列某些原因而进入不活动状态:服务器故障、消息传递引擎故障或者与消息传递引擎的连接发生故障。 在集群环境中运行启用了 Web 消息传递的应用程序时,您应该考虑将 useDurable 和 useDistributedSession 配置属性设置为 true,以获取最佳的故障转移结果。如果这些属性都设置为 true,那么 Web 消息传递客户机将能够进行故障转移以便从一个服务器切换到另一服务器并恢复任何持久预订。 如果将持久预订用于 Web 消息传递,那么每个 Web 消息传递客户机都将保持与其最初连接的消息传递引擎相关联。当 Web 消息传递客户机取消预订某个主题时,无论这是特定 Bayeux 取消预订操作的结果、Bayeux 断开连接操作的结果还是 Bayeux 会话到期的结果,要完成取消预订操作,消息传递引擎都必须处于运行状态。Web 消息传递服务将跟踪持久预订信息并在可能时使其到期,但有时不可能完成此任务。在这些情况下,您必须通过管理过程以手动方式删除持久预订。 在许多情况下,必须先经过短暂的延迟,然后才能恢复 Web 消息传递客户机的持久预订。Bayeux 重新连接重试建议机制用于在短暂的时间段后指示 Web 消息传递客户机进行重新连接,以便复原这些持久预订。重新连接时间间隔由 reinitInterval 配置属性控制。尝试进行重新连接时耗用的最大时间由 MaxReinitDuration 配置属性控制。 使用持久预订还有其他开销,因此,在设置此属性之前,应该进行规划。有关更多信息,请参阅服务集成总线文档。 |
如果 autoReinit 配置属性设置为 true,那么与服务集成总线进行的通信发生问题时,Web 消息传递客户机将重新连接到该服务集成总线并重新预订任何主题。
名称: | autoReinit |
---|---|
必需或可选: | 可选 |
数据类型: | 布尔值 |
受支持的值: | true 或 false |
缺省值: | false |
描述: | 应该将 autoReinit 属性设置为,当 Web 消息传递客户机与服务集成总线的通信遇到错误时,它将自动地重新初始化与该服务集成总线的连接并重新预订先前所预订的任何主题。在预订丢失与重新初始化之间的时间间隔内,任何发布到主题的消息都不会到达 Web 消息传递客户机。 如果 useDurable 和 autoReinit 属性都设置为 true,那么 useDurable 属性将生效。 在集群中运行启用了 Web 消息传递的应用程序时,您可以考虑将 autoReinit 和 useDistributedSession 配置属性设置为 true。如果这些属性都设置为 true,那么 Web 消息传递客户机将能够在服务器发生故障时恢复操作并在另一服务器上恢复 Web 消息传递操作。如果 autoReinit 和 useDurable 属性都设置为 false,那么会将 Bayeux 重新握手建议发送到客户机,以指示客户机应该进行重新握手并初始化新的 Bayeux 会话。 在许多情况下,必须先经过短暂的延迟,然后才能重新初始化 Web 消息传递客户机的连接和预订。Bayeux 重新连接重试建议机制用于在短暂的时间段后指示 Web 消息传递客户机进行重新连接,以便重新初始化客户机的预订。此重新连接时间间隔由 reinitInterval 配置属性控制。尝试进行重新连接时耗用的最大时间由 MaxReinitDuration 配置属性控制。 |
如果 autoReinit 或 useDurable 配置属性设置为 true,那么与服务集成总线的通信发生错误时,将指示 Web 消息传递客户机按 reinitInterval 配置属性指定的值定期进行重新连接以恢复操作。
名称: | reinitInterval |
---|---|
必需或可选: | 可选 |
数据类型: | 整型 |
受支持的值: | 以秒为单位指定的 1 到 300 范围内的值。 |
缺省值: | 10 |
描述: | 在 Web 消息传递客户机与服务集成总线的通信遇到错误后,可能要经过短暂的时间,然后 Web 消息传递客户机才能恢复与服务集成总线的通信。发生这种情况时,具有时间间隔建议的 Bayeux 重新连接重试请求将被发送到客户机,以指示客户机根据 reinitInterval 配置属性所指定的时间间隔进行重新连接。. Web 消息传递客户机将尝试按照 maxReinitDuration 配置属性指定的最大时间进行重新连接。 |
maxReinitDuration 配置属性指定 Web 消息传递客户机在尝试恢复对服务集成总线执行的操作时可耗用的最大时间。
名称: | maxReinitDuration |
---|---|
必需或可选: | 可选 |
数据类型: | 整型 |
受支持的值: | 以秒为单位指定的 10 到 600 范围内的值 |
缺省值: | 60 |
描述: | 如果 autoReinit 或 useDurable 配置属性设置为 true,那么 Web 消息传递客户机将尝试恢复对服务集成总线执行的操作。在某些情况下,可能无法及时地恢复操作。在 maxReinitDuration 时间经过后,Web 消息传递客户机将不再尝试恢复对服务集成总线执行的操作,Bayeux 会话将到期。 |