我已经在我的项目的rabbitmq中创建了一个stream队列,并将max-age配置为1分钟。我向队列发送了一条消息,所有的使用者都使用了该消息,但该消息仍保留在队列中(我等待了超过1分钟),显示为“就绪”。我担心的是rabbitmq示例的HD中消息的累积。所以,我的问题是:所有标记为“就绪”的消息都存储在HD中,即使所有消费者都使用了这些消息?如果是,我如何才能从rabbitmq示例的HD中清除这些消息(在这种情况下,最大年龄不起作用)?
yquaqz181#
那就是设计;请https://www.rabbitmq.com/streams.html#retention流作为不可变的仅附加磁盘日志来实现。这意味着日志将无限增长,直到磁盘用尽为止。要避免这种不希望出现的情况,可以为每个流设置一个保留配置,该配置将根据总日志数据大小和/或存在时间丢弃日志中最旧的数据。有两个参数控制流的保留。它们可以组合。它们可以在声明时使用队列参数设置,也可以作为一个可以动态更新的策略。...
max-age: valid units: Y, M, D, h, m, s e.g. 7D for a week max-length-bytes: the max total size in bytes
注意:保留是以每个区段为基础来评估的,因此多了一个生效的参数,也就是数据流的区段大小。只要区段至少包含一个消息,数据流就会永远保留至少一个区段。使用Broker提供的位移追踪时,每个使用者的位移都会以非消息数据的形式保存在数据流本身中。但我明白你的意思。我建议您在RabbitMQ用户的Google组上询问RabbitMQ工程师们在哪里闲逛;他们监控得不那么严密。
brvekthn2#
同样的问题在这里,消息是nerver删除。
wqnecbli3#
我找到的解决方案是:
3条答案
按热度按时间yquaqz181#
那就是设计;请https://www.rabbitmq.com/streams.html#retention
流作为不可变的仅附加磁盘日志来实现。这意味着日志将无限增长,直到磁盘用尽为止。要避免这种不希望出现的情况,可以为每个流设置一个保留配置,该配置将根据总日志数据大小和/或存在时间丢弃日志中最旧的数据。
有两个参数控制流的保留。它们可以组合。它们可以在声明时使用队列参数设置,也可以作为一个可以动态更新的策略。...
注意:保留是以每个区段为基础来评估的,因此多了一个生效的参数,也就是数据流的区段大小。只要区段至少包含一个消息,数据流就会永远保留至少一个区段。使用Broker提供的位移追踪时,每个使用者的位移都会以非消息数据的形式保存在数据流本身中。
但我明白你的意思。
我建议您在RabbitMQ用户的Google组上询问RabbitMQ工程师们在哪里闲逛;他们监控得不那么严密。
brvekthn2#
同样的问题在这里,消息是nerver删除。
wqnecbli3#
我找到的解决方案是: