【问题标题】:Removal of hornetq journal files in JMS删除 JMS 中的 hornetq 日志文件
【发布时间】:2019-06-30 06:50:00
【问题描述】:

我知道已经有similar question,但我需要对此案进行一些澄清。

如果我提出这个相当老的话题,我很抱歉,但这个问题是我在整个网络中发现的唯一问题。

让我们想象一下我的 JMS 的日志目录充满了我需要摆脱的旧垃圾(hornetq-data-$id.hq 文件 n 个月前,在灾难后仍然徘徊在那里)并且我知道(发生了,在另一个系统),当 jms 重新启动时,所有内容都将被流出,并带来令人不安的后果。

让我们也想象一下,我无法停止 jms,并且将以我不允许干预的自动方式重新启动。

我的问题是,如果我用一个简单的 'rm' 删除那些旧文件(不是整个目录,只是几个月前的那些)会造成任何麻烦(例如,有一个索引会出错)还是会我只是丢失了那些消息(我不再关心,所以没关系)?

【问题讨论】:

    标签: jms hornetq journal


    【解决方案1】:

    我预计它会造成麻烦,甚至可能会阻止经纪人。日志是代理不可分割的一部分,日志的任何 I/O 操作失败都将被视为“严重”,并将导致代理关闭。

    此外,日志文件以循环方式重复使用,因此您要删除的所有消息都位于特定的日志文件中而没有您想要保留的任何消息的可能性极小。重申一下,您不应删除任何日志文件。只需使用管理 API。它将允许您从单个队列中删除消息。您可以删除特定队列中的所有消息或提供过滤器以选择性地删除某些消息。您可以通过 JMX 或管理消息(即发送到管理地址的特殊构造的 JMS 消息)来使用它。

    【讨论】:

    • 非常感谢@jbertram!不过,我需要一些小的进一步说明。你说写入失败会产生问题,但我认为删除这些文件最多会导致读取失败,我错了吗?更多,对不起,我对API不是太熟悉。我希望删除的消息都在明确标识的文件中。我可以将文件作为一个整体删除,还是只能将消息作为“交互对象”访问?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-25
    • 2013-05-25
    • 2010-11-16
    • 2014-07-02
    • 1970-01-01
    • 2012-10-29
    相关资源
    最近更新 更多