如果您在 broker.xml 中启用 journal-retention-directory
,ActiveMQ Artemis 将在该文件夹中保留通过代理的每条数据的副本。
<configuration...>
<core...>
...
<journal-retention-directory unit="DAYS" period="365" storage-limit="10G">history</journal-retention-directory>
...
</core>
</configuration>
ActiveMQ Artemis 会根据配置的保留期限和单位,保留每个生成的日志文件副本。在上面的示例中,系统会保留所有日志文件,最长可达 365 天。
也可以限制保留目录中保留的文件数量。您可以设置一个存储限制,当文件数量超过存储限制时,系统会开始删除较旧的文件。
请注意,存储限制是可选的,但您需要注意不要让保留文件夹用完磁盘空间,否则代理可能会因严重 I/O 错误而关闭。
您可以使用 CLI 工具检查和从历史记录中恢复数据,只需传递作为保留目录的日志文件夹即可。
示例
./artemis data print --journal ../data/history
1. 分页和大型消息
启用保留后,分页消息和大型消息也会存储在保留文件夹中以供回放,因此回放也适用于分页消息和大型消息。
2. 非持久化消息
非持久化消息永远不会存储在代理中的任何位置。如果您想保留数据,您的生产者应使用持久化消息。
1. 从保留目录中恢复数据
要从保留文件夹恢复数据,可以使用管理控制台上的方法 replay
代理会根据您传递的参数扫描文件集,并将这些方法发送到您选择的目标队列。
1.1. CLI 恢复操作
CLI 恢复操作旨在用作低级操作,其中数据直接读取并恢复到一组日志文件中。请注意,您永远不应该操作活动代理正在使用的日志文件,因为这可能会影响数据文件和运行中的代理的完整性。
./artemis data recovery --journal ../data/history --target ../data/recovered --large-messages ../data/large-messages