跳到主要内容

播放重放日志

有三个Solace CLI命令允许您控制从事件代理播放消息。

  • 使用start-replay启动记录消息的重放
  • 使用cancel-replay删除所提供端点上的重放消息
  • 使用trim-logged-messages从重放日志中删除消息

有关从客户端启动重放的信息,请参见客户端启动重放。

使用start-replay启动记录消息的重放

start-replay命令启动从重放日志到所提供端点的记录消息的重放。

solace> enable
solace# admin
solace(admin)# message-spool message-vpn <vpn-name>
solace(admin/message-spool)# queue <queue-name> | topic-endpoint <topic-endpoint-name>
solace(admin/message-spool/queue|topic-endpoint)# start-replay [replay-log <replay-log>] [from-date <from-date> | after-msg <replication-group-msg-id>]

其中:

  • <vpn-name> — 消息VPN的名称。

  • <queue-name> — 队列的名称。

  • <topic-endpoint-name> — 主题端点的名称。

  • <replay-log> — 重放日志的名称。

  • <from-date> — 格式为YYYY-MM-DDThh:mm:ssTZD,其中TZD是时区标识符。例如,from-date可能看起来像:2018-08-13T11:34:13-04:00

    • 如果from-date早于日志的创建日期,重放将失败,端点的重放状态将为失败。
    • 如果没有给出from-date,重放将从最旧的可用消息开始。
  • <replication-group-msg-id> — 通过其复制组消息ID标识的开始重放的消息。提供的字符串应通过Solace CLI、PubSub+ Broker Manager或SEMPv2等PubSub+事件代理管理界面给出。您也可以通过使用PubSub+消息传递API将复制组消息ID转换为字符串来获取此值。

在重放之前,端点上存储的所有消息将被删除,并且绑定的流将被解除绑定。PubSub+消息传递API可以处理这种情况,并自动重新绑定到端点。此外,在接收到start-replay命令时,端点上正在进行的任何重放将被取消。

不支持向分区队列、临时主题端点或临时队列启动重放。

重放到队列的消息不计入队列的存储使用量。

实时消息接收重放端点目的地会发生什么?

接收以重放端点为目的地的实时消息不会存储到端点,而是会被放入重放日志中。当重放赶上这些消息时,它们将被重放到端点。没有进行重放且具有匹配主题订阅的端点将继续接收消息。

如果没有客户端绑定到重放端点会发生什么?

如果您在没有客户端绑定的端点上启动重放,最多将有1,000条消息被重放到端点。当客户端绑定时,随着这些消息被消费,将有更多的消息被重放,因为重放会继续。

如果没有客户端绑定到端点,并且要重放的消息少于1,000条,端点将立即转换到Pending Complete状态并开始吸引实时消息。

如果在重放期间订阅发生变化会发生什么?

重放的消息基于重放开始时的主题订阅。如果您在重放进行中添加、更改或删除订阅,重放的消息不会发生变化。

修剪对重放的可能影响是什么?

从重放日志的开始处重放时,客户端可能无法成功完成重放操作,因为重放日志修剪消息的速度比客户端消费的速度快。有关修剪的更多信息,请参见修剪重放日志。

选择器的影响是什么?

我们建议您避免在队列上使用出站选择器,因为选择器和消息重放之间会发生以下功能交互:

  • 如果您重放到一个使用出站选择器的队列,并且该队列有一个或多个消费者,您必须确保选择器匹配所有重放的消息,否则消息重放可能无法完成。
  • 您可以重放到具有选择器的主题端点,但只有匹配主题端点订阅和选择器的消息才会被重放。

使用cancel-replay删除所提供端点上的重放消息

cancel-replay命令删除存储在所提供端点上的所有重放消息,并断开绑定的客户端。它还会导致端点进入Failed状态,并导致绑定到端点的任何流被解除绑定。

solace> enable
solace# admin
solace(admin)# message-spool message-vpn <vpn-name>
solace(admin/message-spool)# queue <queue-name> | topic-endpoint <topic-endpoint-name>
solace(admin/message-spool/queue|topic-endpoint)# cancel-replay [force-complete]

其中:

  • <vpn-name> — 消息VPN的名称。
  • <queue-name> — 队列的名称。
  • <topic-endpoint-name> — 主题端点的名称。
  • force-complete — 该参数强制重放完成,而不等待绑定客户端确认未请求的解除绑定请求,并清除Failed状态。

使用trim-logged-messages从重放日志中删除消息

trim-logged-messages命令从重放日志中删除从日志中最旧的消息开始到但不包括<older-than-date>的所有消息。

solace> enable
solace# admin
solace(admin)# message-spool message-vpn <vpn-name>
solace(admin/message-spool)# replay-log <replay-log-name>
solace(admin/message-spool/replay-log)# trim-logged-messages older-than-date <older-than-date>

其中:

  • <vpn-name> — 消息VPN的名称。
  • <replay-log-name> — 消息重放日志的名称。
  • <older-than-date> — 格式为YYYY-MM-DDThh:mm:ssTZD,其中TZD是时区标识符。例如,older-than-date可能看起来像:2018-08-13T11:34:13-04:00