Man*_*hit 4 amqp rabbitmq messagebroker
我正在浏览Rabbitmq 官方网站提供的 AMQP文档。它说
队列持久性持久队列被持久化到磁盘,因此在代理重启后仍然存在。不持久的队列称为瞬态。并非所有场景和用例都要求队列是持久的。
队列的持久性不会使路由到该队列的消息持久。如果broker被关闭然后又重新启动,则在broker启动期间会重新声明持久队列,但是,只会恢复持久消息。
但是,当消息代理崩溃时,我对以下情况感到困惑:-
在上述所有情况下,下次启动 rabbit-mq 服务器时这些消息是否可用?
此外,文档区分了普通消息和持久消息,因为只有持久消息才会被恢复。两种消息类型有什么区别?
提前致谢。
代理重启后,持久队列将持续存在。这意味着在重新启动后,队列将自动重新创建,而无需您再次手动创建。这只能确保队列将继续存在,而不是它包含的任何消息。
现在,持久消息将在到达队列后立即写入磁盘,这与队列无关(持久与否)。
所以回答你的问题。如果您希望在重新启动后恢复您的消息,请始终将它们声明为持久的。假设这样,您的场景将是:
请注意,持久消息在非持久队列中无效;当服务器重新启动时,不会重新创建队列,因此不会从持久性日志文件中重新创建消息。对于消息可能被路由到的每个非持久队列也是如此:一旦消息被路由到非持久队列,它就会从持久性日志文件中删除,不再被视为持久性。
归档时间: |
|
查看次数: |
1798 次 |
最近记录: |