【问题标题】:Artemis vs Activemq 5 message storeArtemis vs Activemq 5 消息存储
【发布时间】:2019-08-27 21:43:55
【问题描述】:

在 activemq 5 中,每个队列都有一个文件夹,其中包含其数据和消息,一切。 这意味着,如果出现问题,例如磁盘空间不足错误。在服务器崩溃之前,某些文件会损坏。在这种情况下,在 activemq 5 中,我们会找到指示文件损坏的日志,我们可以删除损坏的队列文件夹,从而导致少量消息丢失而不是所有消息。

在 artemis 中,消息似乎存储在相同的文件中,独立于它们存储的队列。这意味着如果我遇到磁盘空间不足错误,我可能必须删除我的所有消息。

首先,你能确认行为的改变,其次,有没有办法恢复?另外,如果有人知道为什么会发生这种变化,我想了解一下。

【问题讨论】:

    标签: activemq storage activemq-artemis


    【解决方案1】:

    与 5.x 相比,Artemis 使用全新的消息日志实现。同一日志 用于所有消息。但是,它不会出现您在 5.x 中看到的相同损坏问题。如果无法处理来自日志的记录,那么它们将被简单地跳过。

    如果您遇到磁盘空间不足的错误,您永远不需要删除所有邮件。日志文件本身在实际使用之前被分配并填充零以满足其配置的大小,因此如果您打算用完磁盘空间,您可以在该过程中在将任何消息写入它们之前这样做。

    Artemis 日志实现是从头开始编写的,旨在实现高性能,特别是结合代理的非阻塞架构。

    【讨论】:

    • 那么当我的磁盘用完时会发生什么?损坏的文件被跳过,并且代理无论如何都设法重新启动?
    • 我想你回答了我的担忧是的。即使我仍然不确定如果发生崩溃我不会在这里丢失消息。
    • 如果您还有其他问题,请随时提出。否则,我建议您简单地执行自己的测试,甚至查看源代码以了解其工作原理。
    • 是否有工具可以读取/管理/编辑这些文件?有很多工具可以在没有运行 activemq 的情况下读取 kahadb
    • 您收到该消息的原因是 ActiveMQ Artemis 数据工具只能在代理关闭时运行。
    猜你喜欢
    • 2021-09-02
    • 2019-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多