跳到主要内容

消息重放示例

以下部分提供了一些简单的示例,展示如何使用Solace CLI命令从事件代理配置和启动消息重放。

  • 创建重放日志
  • 在队列上启动重放
  • 在队列上取消重放
  • 在主题端点上启动重放
  • 在主题端点上取消重放
  • 在临时队列上启用重放
  • 修剪已记录的消息

有关示例中显示的Solace CLI命令的详细信息,请参见以下部分:

  • 配置消息重放
  • 播放重放日志

创建重放日志

您可以使用以下命令创建重放日志:

solace1> enable
solace1# configure
solace1(configure)# message-spool message-vpn <vpn-name>
solace1(configure/message-spool)# create replay-log <log-name>
solace1(configure/message-spool/replay-log)# max-spool-usage <size-in-MB>
solace1(configure/message-spool/replay-log)# no shutdown
solace1(configure/message-spool/replay-log)# exit

默认情况下,max-spool-usage大小设置为0。要记录消息,max-spool-usage大小<size-in-MB>必须大于0。要确定重放日志所需的大小,请参见配置消息重放。

在队列上启动重放

solace1# admin
solace1(admin)# message-spool message-vpn <vpn-name>
solace1(admin/message-spool)# queue <queue-name>
solace1(admin/message-spool/queue)# start-replay

上述示例中的start-replay命令从日志的开始处启动重放。您可以指定您希望开始重放的日期和时间(start-replay from-date <from-date>),其中from-date的格式为YYYY-MM-DDThh:mm:ssTZDTZD是时区标识符。例如,一个特定日期和时间的start-replay行可能如下所示:

solace1(admin/message-spool/queue)# start-replay from-date 2018-08-13T11:34:13-04:00

或者,您可以指定一个复制组消息ID,从该ID之后开始重放(start-replay after-msg <replication-group-msg-id>)。

在队列上取消重放

您可以使用以下命令取消队列上的重放:

solace1# admin
solace1(admin)# message-spool message-vpn <vpn-name>
solace1(admin/message-spool)# queue <queue-name>
solace1(admin/message-spool/queue)# cancel-replay

当您取消重放时,所有客户端都会被解除绑定。如果解除绑定任何客户端应用程序出现问题,cancel-replay命令可能不会成功。您可以使用force-complete强制命令成功,但这可能会导致对该队列的后续绑定错误。

solace1(admin/message-spool/queue)# cancel-replay force-complete

在主题端点上启动重放

您可以使用以下命令在主题端点上启动重放:

solace1# admin
solace1(admin)# message-spool message-vpn <vpn-name>
solace1(admin/message-spool)# topic-endpoint <topic-endpoint-name>
solace1(admin/message-spool/topic-endpoint)# start-replay

上述示例中的start-replay命令从日志的开始处启动重放。您可以指定您希望开始重放的日期和时间(start-replay from-date <from-date>),其中from-date的格式为YYYY-MM-DDThh:mm:ssTZDTZD是时区标识符。例如,一个特定日期和时间的start-replay行可能如下所示:

solace1(admin/message-spool/topic-endpoint)# start-replay from-date 2018-08-13T11:34:13-04:00

或者,您可以指定一个复制组消息ID,从该ID之后开始重放(start-replay after-msg <replication-group-msg-id>),其中replication-group-msg-id字符串应通过PubSub+事件代理管理界面(如Solace CLI、PubSub+ Broker Manager或SEMPv2)给出。您也可以通过使用PubSub+消息传递API将复制组消息ID转换为字符串来获取它。

在主题端点上取消重放

您可以使用以下命令取消主题端点上的重放:

solace1# admin
solace1(admin)# message-spool message-vpn <vpn-name>
solace1(admin/message-spool)# topic-endpoint <topic-endpoint-name>
solace1(admin/message-spool/topic-endpoint)# cancel-replay

当重放被取消时,事件代理会向绑定到端点的所有客户端发送解除绑定,并等待每个客户端的解除绑定确认。如果您不想等待解除绑定确认,请使用force-complete选项:

solace1(admin/message-spool/topic-endpoint)# cancel-replay force-complete

在临时队列上启用重放

要启用临时队列上的重放,您可以使用队列模板来覆盖应用程序请求的持久性。在这种情况下,API信号为持久队列,您配置事件代理将持久性覆盖为非持久性。

非持久主题端点支持重放,无需进一步配置。

首先,您创建一个队列模板来覆盖某些队列名称的持久性(在本示例中,所有名称为tmpQforReplay/的队列)。

solace1> enable
solace1# configure
solace1(configure)# message-spool message-vpn <vpn-name>
solace1(configure/message-spool)# create queue-template forReplayToTemp
solace1(configure/message-spool/queue-template)# durability-override non-durable
solace1(configure/message-spool/queue-template)# name-filter tmpQforReplay/*
solace1(configure/message-spool/queue-template)# end

然后,为客户端配置文件(在本示例中为默认客户端配置文件)的队列创建包括上述模板。

solace1(configure)# client-profile default message-vpn <vpn-name>
solace1(configure/client-profile)# message-spool
solace1(configure/client-profile/message-spool)# api-queue-management
solace1(...le/message-spool/api-queue-management)# copy-from-template-on-create forReplayToTemp
solace1(...le/message-spool/api-queue-management)# end

启用后,应用程序可以启动重放到任何具有指定名称的临时队列,或由具有指定配置文件的客户端创建的任何临时队列。

通过Solace CLI或SEMP管理性启动的对非持久端点的重放请求不受支持。

修剪已记录的消息

您可以使用以下命令手动修剪重放日志:

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

<older-than-date>的格式为YYYY-MM-DDThh:mm:ssTZDTZD是时区标识符。例如,trim-logged-messages行可能如下所示:

solace1(admin/message-spool/replay-log)# trim-logged-messages older-than-date 2018-08-13T11:34:13-04:00

有关trim-logged-messages命令的更多信息,请参见使用trim-logged-messages从重放日志中删除消息。