跳到主要内容

复制最佳实践

本节描述了在使用 Solace PubSub+ 事件代理的复制功能时,客户端应用程序应考虑的事项。复制功能为 Solace PubSub+ 提供了数据中心冗余和灾难恢复解决方案。

消息API版本

强烈建议复制感知型应用程序使用 PubSub+ 消息 API 的 7.1.2 或更高版本。这些版本支持自动处理复制故障转移。当发生复制故障转移时,API 会正确处理任何正在进行的消息或事务。

主机列表

应用程序应配置一个包含两个地址的主机列表,每个站点的启用保证消息的虚拟路由器各一个。这些地址可以是 IP 地址或主机名。

当应用程序尝试连接到备用事件代理时,连接将被事件代理拒绝。在指定的每个主机的重新连接尝试次数后,API 将尝试连接到主机列表中的另一个主机。通常情况下,对于要与复制一起使用的应用程序,如果一个主机的连接失败,则最好立即尝试连接到另一个主机,然后再尝试连接同一个主机。因此,建议将每个主机的重新连接尝试次数设置为 1。

如果使用主动/主动复制部署,客户端从复制活动消息 VPN 或其配对的复制备用消息 VPN 上的端点消费消息,则不应使用主机列表。对于这种部署,每个消费客户端应仅尝试连接到一个主机上的复制活动消息 VPN 或其配对的复制备用消息 VPN。

自动重新连接

当使用 PubSub+ 消息 API 的自动重新连接功能时,需要注意的是,复制故障转移的持续时间将是分钟或小时,因为需要操作员干预才能进行切换。因此,建议将重新连接尝试次数设置为 -1,这允许客户端应用程序无限期地尝试重新连接。

有关如何处理复制重新连接的示例,请参阅随 PubSub+ 消息 API 提供的 Replication 示例。

队列网络名称

随着复制功能的发布,API 中的队列网络名称接口已被弃用。原因是队列网络名称在不同的虚拟路由器之间会发生变化,但复制应用程序需要确保在配对的复制站点内队列命名保持一致。

对于 C 消息 API,建议直接将应用程序队列名称作为 SOLCLIENT_ENDPOINT_PROP_NAMESOLCLIENT_FLOW_PROP_BIND_NAME 提供,而不是从已弃用的函数 solClient_createQueueNetworkName() 中获取名称。