播放重放日志
有三个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
。